欢迎访问宙启技术站
智能推送

drf_yasg.openapi:一种在Python中生成易读的中文API文档的框架

发布时间:2023-12-27 02:43:53

drf-yasg.openapi是一个用于在Python中生成易读的中文API文档的框架。它是基于Django REST framework和OpenAPI规范构建的,提供了一种简单方便的方式来生成和展示API文档。

在使用drf-yasg.openapi之前,我们需要先安装它。可以通过pip命令来安装:

pip install drf-yasg

安装完成后,我们可以创建一个Django项目并使用drf-yasg.openapi来生成API文档。

首先,在settings.py文件中添加以下配置:

INSTALLED_APPS = [
    ...
    'drf_yasg',
]

SWAGGER_SETTINGS = {
    'SECURITY_DEFINITIONS': {
        'api_key': {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization'
        }
    },
    'LOGIN_URL': 'rest_framework:login',
    'LOGOUT_URL': 'rest_framework:logout',
}

接下来,在urls.py文件中添加以下路由配置:

from django.contrib import admin
from django.urls import path, include
from rest_framework import permissions

from drf_yasg import openapi
from drf_yasg.views import get_schema_view

schema_view = get_schema_view(
    openapi.Info(
        title="API文档",
        default_version='v1',
        description="这是一个API文档示例",
        terms_of_service="https://www.example.com/policies/terms/",
        contact=openapi.Contact(email="contact@example.com"),
        license=openapi.License(name="BSD License"),
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('api.urls')),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
]

以上配置完成后,我们可以编写API视图和序列化器,并使用drf-yasg.openapi装饰器来生成API文档。

假设我们有一个用户管理的API接口,我们可以创建一个名为users.py的文件,然后编写以下代码:

from rest_framework import generics

from .serializers import UserSerializer
from .models import User

from drf_yasg.utils import swagger_auto_schema

class UserListCreateView(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    @swagger_auto_schema(operation_summary="列表和创建用户", responses={200: UserSerializer(many=True)})
    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    @swagger_auto_schema(operation_summary="列表和创建用户", request_body=UserSerializer, responses={200: UserSerializer()})
    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

在上面的代码中,我们使用swagger_auto_schema装饰器来为get和post方法生成API文档,其中operation_summary参数用于设置API操作的摘要,responses参数用于设置API响应的序列化器。

接下来,我们需要编写一个序列化器来定义API数据的格式。我们可以创建一个名为serializers.py的文件,并编写以下代码:

from rest_framework import serializers

from .models import User

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

在上面的代码中,我们使用ModelSerializer来定义了一个UserSerializer,它会根据User模型自动创建序列化器。

完成以上的步骤后,我们可以运行Django服务器并访问http://localhost:8000/swagger/来查看生成的API文档。

drf-yasg.openapi提供了丰富的功能来生成和展示API文档,例如自动生成接口参数、请求和响应格式、自定义认证和权限验证等。使用drf-yasg.openapi能够帮助我们更好地了解和使用API,提高工作效率和代码质量。

总结来说,drf-yasg.openapi是一个方便易用的Python框架,用于生成易读的中文API文档。通过简单的配置和装饰器,我们可以快速地生成和展示API文档,并且可以灵活地定制文档的各个方面。它是Django REST framework和OpenAPI规范的有力补充,为API开发和文档编写提供了便利和效率。