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