zoukankan      html  css  js  c++  java
  • API文档自动生成

    一、利用coreapi库

    使用方法:

    1、安装coreapi

    pip install coreapi

    2、在路由配置文档链接

    from rest_framework.documentation import include_docs_urls
        urlpatterns = [
            ...
            path('docs/', include_docs_urls(title='站点页面标题'))
        ]

    3、视图类:自动接口文档能生成的是继承自APIView及其子类的视图。

        -1 ) 单一方法的视图,可直接使用类视图的文档字符串,如
            class BookListView(generics.ListAPIView):
                """
                返回所有图书信息.
                """
        -2)包含多个方法的视图,在类视图的文档字符串中,分开方法定义,如
            class BookListCreateView(generics.ListCreateAPIView):
                """
                get:
                返回所有图书信息.
                post:
                新建图书.
                """
        -3)对于视图集ViewSet,仍在类视图的文档字符串中封开定义,但是应使用action名称区分,如
            class BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
            """
            list:
            返回图书列表数据
            retrieve:
            返回图书详情数据
            latest:
            返回最新的图书数据
            read:
            修改图书的阅读量
            """

    注意事项:

    1、遇到报错 AttributeError: 'AutoSchema' object has no attribute 'get_link'

    解决方法:在settings中配置

    REST_FRAMEWORK = {
     'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
        # 新版drf schema_class默认用的是rest_framework.schemas.openapi.AutoSchema
    }

    2、视图集ViewSet中的retrieve名称,在接口文档网站中叫做read()

    3、参数的Description需要在模型类或序列化器类的字段中以help_text选项定义

    class Student(models.Model):
        ...
        age = models.IntegerField(default=0, verbose_name='年龄', help_text='年龄')
        ...
    
    class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = "__all__"
            extra_kwargs = {
                'age': {
                    'required': True,
                    'help_text': '年龄'
                }
            }

     二、利用swagger库

    使用方法:

    1、安装django-rest-swagger

    pip install django-rest-swagger

    2、在项目配置文件settings中注册django-rest-swagger应用

    INSTALLED_APPS = [
        'django.contrib.admin',
        ....
        'rest_framework_swagger',
    ]

    3、视图类,跟coreapi库得操作一样,对方法进行注释

    4、路由配置:

    '''
    swagger使用方法:
    1、导入辅助函数get_schema_view
    2、从swagger导入两个类SwaggerUIRenderer,OpenAPIRenderer
    3、利用辅助函数导入两个类
    '''
    from rest_framework.schemas import get_schema_view
    from rest_framework_swagger.renderers import SwaggerUIRenderer,OpenAPIRenderer
    schema_view=get_schema_view(title='API接口文档',renderer_classes=[SwaggerUIRenderer,OpenAPIRenderer])
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url('swagger/',schema_view)
    
    ]
  • 相关阅读:
    基于 HTML5 WebGL 的 3D 仓储管理系统
    基于 HTML5 WebGL 的 3D “弹力”布局
    基于HTML5 Canvas 实现地铁站监控
    基于HTML5的WebGL经典3D虚拟机房漫游动画
    根据矩阵变化实现基于 HTML5 的 WebGL 3D 自动布局
    玩转 HTML5 下 WebGL 的 3D 模型交并补
    基于HTML5 Canvas WebGL制作分离摩托车
    基于HTML5 Canvas的3D动态Chart图表
    基于HTML5 Canvas的工控SCADA模拟飞机飞行
    [iOS]过渡动画之高级模仿 airbnb
  • 原文地址:https://www.cnblogs.com/nq31/p/13956664.html
Copyright © 2011-2022 走看看