drf_yasg.openapi:一种在Python中生成易读的中文API文档的框架
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开发和文档编写提供了便利和效率。
