一、rest_framework_swagger 介绍
在 Django REST Framework(DRF)项目中,Swagger 是一个常用的工具,用于自动生成 API 文档并提供交互式界面,帮助开发人员更好地理解和测试 API。rest_framework_swagger 是一个与 DRF 集成的第三方库,它能够将 DRF API 自动转换为 Swagger 文档。
二、DRF项目配置
-
要在 DRF 项目中使用 rest_framework_swagger,首先需要安装该库。可以通过 pip 进行安装:
pip install django-rest-swagger
-
添加应用到INSTALLED_APPS: 在 Django 项目的 settings.py 文件中,将 ‘rest_framework_swagger’ 添加到 INSTALLED_APPS 列表中:
INSTALLED_APPS = [ ... 'rest_framework_swagger', ]
-
配置 URL 路由: 在 Django 项目的 urls.py 文件中,添加 rest_framework_swagger 的 URL 路由:
if settings.RUN_MODE == "DEVELOP": # 开发环境才开放docs查看 """ 开发时添加SWAGGER API DOC 访问地址: http://xxx:8000/docs/ """ from rest_framework_swagger.views import get_swagger_view schema_view = get_swagger_view(title="%s API" % settings.APP_ID.upper()) urlpatterns += [path("docs/", schema_view)]
在此示例中,get_swagger_view() 函数用于创建 Swagger 视图,并将标题设置为 ‘API 文档’。然后,将此视图映射到 ‘/docs/’ URL。
-
完成配置后,您可以访问
http://xxx:8000/docs/
,以查看自动生成的 Swagger API 文档。在 Swagger UI 中,您将看到列出了您的 API 端点和操作,并且可以尝试执行各种操作,例如发送请求并查看响应。
三、注意事项
下面注意事项是必须的,如果配置错误,访问docs会报错
- viewset中,必须要配置一个
serializer_class
。如果不需要serializer_class
,viewset不要继承viewsets.ModelViewSet
。 - 如果配置了
get_serializer_class
方法,必须要有return
。下面情形会报错,因为有一种情况是没有return的:def get_serializer_class(self, *args, **kwargs): """ 获取序列化类 """ if self.action == "retrieve": return RetrievexxxSerializer elif: return xxxSerializer
四、对接普通接口
function-based-views
因为django-rest-swagger
是配合DRF使用的,对于非DRF框架实现对接口,要使用装饰器@api_view
然后,还需要加上@permission_classes([])
,跳过DRF鉴权