django-rest-framework学习之路-12-API接口文档


django-rest-framework学习之路-12-API接口

下载模块

python -m pip install drf-spectacular
python -m pip install drf-spectacular[sidecar]

注冊到APP

INSTALLED_APPS = [
...
    'drf_spectacular',
    'drf_spectacular_sidecar'
...
]

设置默认的显示类为AutoSchema

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',),
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',

}

设置一些元信息

SPECTACULAR_SETTINGS = {
    'TITLE': 'API接口文档-我的项目',
    'DESCRIPTION': '项目详情介绍-我的项目',
    'VERSION': '1.0.0',
    'SERVE_INCLUDE_SCHEMA': False,
    'SWAGGER_UI_DIST': 'SIDECAR',  # shorthand to use the sidecar instead
    'SWAGGER_UI_FAVICON_HREF': 'SIDECAR',
    'REDOC_DIST': 'SIDECAR',
}

设置路由

from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('student_info/', include("student_info.urls")),

    path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
    path('api/schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),  # swagger接口文档
]

查看

http://127.0.0.1:8000/api/schema/swagger-ui/

可以自定义,例如

@extend_schema(
    parameters=[
        OpenApiParameter(name="name", required=True, type=str),
        OpenApiParameter(name="sex", required=True, enum=[0, -1, 1], type=int, ),
    ],
    description="测试文档",
    responses=StudentSerializer
)
@api_view(http_method_names=['GET'])
def test(request):
    print(request.body)
    return Response({"a": "hello"})
urlpatterns = [
    path('', include(router.urls)),
    path('test',views.test)
]

这种自定义需要根据自己的实际情况来设置,参考官网

https://drf-spectacular.readthedocs.io/en/latest/readme.html