DRF框架方便的集成了集中生成API文档的方式,可以按需要进行挑选

一,简介

  • 生成API文档平台
  • 自动生成测试代码
  • 支持接口测试

    二,安装

  • coreapi(必须)

  • Pygments(可选)
  • MarkDown(可选)

    1. pip install -i https://pypi.douban.com/simple coreapi
    2. pip install -i https://pypi.douban.com/simple Pygments
    3. pip install -i https://pypi.douban.com/simple MarkDown

    三,使用coreapi

    1.最新版的DRF(>3.10)中,需要在全局配置文件settings.py中添加如下配置

    1. REST_FRAMEWORK = {
    2. # 指定用于支持coreapi的Schema
    3. 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
    4. }

    2,在全局路由配置文件中添加以下代码

    1. from rest_framework.documentation import include_docs_urls
    2. from django.urls import path, include
    3. urlpatterns = [
    4. path('docs/', include_docs_urls(title='测试平台接口文档')),
    5. ]

    3,添加注释

  • 单一方法的视图,直接给视图添加注释即可

    1. class ProjectsListView(ListAPIView):
    2. """
    3. 返回所有项目信息
    4. """
  • 多个方法的视图

    1. class ProjectsListCreateView(ListCreateAPIView):
    2. """
    3. get:
    4. 返回所有项目信息
    5. post:
    6. 新建项目
    7. """
  • 视图集

    1. class ProjectsViewset(viewsets.ModelViewSet):
    2. """
    3. create:
    4. 创建项目
    5. retrieve:
    6. 获取项目详情数据
    7. update:
    8. 完整更新项目
    9. partial_update:
    10. 部分更新项目
    11. destroy:
    12. 删除项目
    13. list:
    14. 获取项目列表数据
    15. names:
    16. 获取所有项目名称
    17. interfaces:
    18. 获取指定项目的所有接口数据
    19. """

    验证效果
    DRF-ApiDoc - 图1

    四,使用drf-yasg

    1,安装

    1. pip install drf-yasg

    2,注册drf-yasg

  • 将’drf_yasg’添加到全局配置的INSTALLED_APPS中

    1. INSTALLED_APPS = [
    2. ...
    3. 'drf_yasg',
    4. ...
    5. ]

    3,在全局路由文件urls.py文件中添加配置

    ```python

    from rest_framework import permissions

    from drf_yasg.views import get_schema_view from drf_yasg import openapi from django.urls import path, re_path

schema_view = get_schema_view( openapi.Info( title=”API接口文档平台”, # 必传 default_version=’v1’, # 必传 description=”这是一个美轮美奂的接口文档”, terms_of_service=”http://api.xiaogongjin.site“, contact=openapi.Contact(email=”xiaogongjin@qq.com”), license=openapi.License(name=”BSD License”), ), public=True,

  1. # permission_classes=(permissions.AllowAny,), # 权限类

)

urlpatterns = [ re_path(r’^swagger(?P.json|.yaml)$’, schema_view.without_ui(cache_timeout=0), name=’schema-json’), path(‘swagger/‘, schema_view.with_ui(‘swagger’, cache_timeout=0), name=’schema-swagger-ui’), path(‘redoc/‘, schema_view.with_ui(‘redoc’, cache_timeout=0), name=’schemaredoc’),

] ```

4,swagger展示

DRF-ApiDoc - 图2

5,redoc展示

DRF-ApiDoc - 图3