美文网首页
(20)Django Rest framwork- 生成API文

(20)Django Rest framwork- 生成API文

作者: 足__迹 | 来源:发表于2019-11-01 00:20 被阅读0次

    安装

    • coreapi (必须)
    • Pygments (可选)
    • Markdown (可选)

    使用coreapi

    最新版的DRF(>3.10)中, 需要添加如下配置

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

    项目中添加URL

    from rest_framework.documentation import include_docs_urls
    from django.urls import path, include
    
    urlpatterns = [
        path('docs/', include_docs_urls(title='测试平台接口文档')),
    ]
    
    • 演示:


      image.png
      image.png
    • 添加注释

      • 单一方法的视图

      • 直接给视图类添加注释即可

      class ProjectsListView(ListAPIView):
          """
          返回所有项目信息
          """
      
      • 多个方法的视图
      class ProjectsListCreateView(ListCreateAPIView):
          """
          get:
          返回所有项目信息
      
          post:
          新建项目
          """
      
      • 视图集

        class ProjectsViewset(viewsets.ModelViewSet):
            """
            create:
            创建项目
        
            retrieve:
            获取项目详情数据
        
            update:
            完整更新项目
        
            partial_update:
            部分更新项目
        
            destroy:
            删除项目
        
            list:
            获取项目列表数据
            
            names:
            获取所有项目名称
        
            interfaces:
            获取指定项目的所有接口数据
            """
        

    添加注释后报告中就会显示描述


    image.png

    但是drf3.12之后就不会支持,推荐使用另一种

    使用drf-yasg

    • 安装
    pip install drf-yasg
    
    • 添加到INSTALLED_APPS中
    INSTALLED_APPS = [
       ...
       'drf_yasg',
       ...
    ]
    
    • 在全局路由文件urls.py文件中添加配置
    # from rest_framework import permissions
    from drf_yasg.views import get_schema_view
    from drf_yasg import openapi
    
    schema_view = get_schema_view(
        openapi.Info(
            title="Lemon API接口文档平台",    # 必传
            default_version='v1',   # 必传
            description="这是一个美轮美奂的接口文档",
            terms_of_service="http://api.keyou.site",
            contact=openapi.Contact(email="keyou100@qq.com"),
            license=openapi.License(name="BSD License"),
        ),
        public=True,
        # permission_classes=(permissions.AllowAny,),   # 权限类
    )
    
    
    urlpatterns = [
        #三种不同风格的接口文档,自选其一
        re_path(r'^swagger(?P<format>\.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='schema-redoc'),
    
    ]
    
    

    验证一
    http://127.0.0.1:8000/swagger/

    image.png
    image.png
    演示二
    http://127.0.0.1:8000/swagger/ image.png

    演示三


    image.png

    以上三种第一种适合平台集成,第二种存在交互可以操作验证,第三种更加详细

    相关文章

      网友评论

          本文标题:(20)Django Rest framwork- 生成API文

          本文链接:https://www.haomeiwen.com/subject/cutzvctx.html