• 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)
    
    ]
  • 相关阅读:
    .NET基础知识之七——索引器
    安装Sql Server 2008的时候报错说找不到某个安装文件
    安装Sql Server 2008时出错
    英文操作系统奇怪的问题
    装虚拟机后一部分磁盘空间消失
    服务器允许两台电脑远程登录一个账户
    Linq工具篇(1)——使用LinqPad
    ExtJs工具篇(1)——在Aptana3中安装ExtJS 代码提示插件
    SQL基础(三)-- SQL根据”,“分割字符串
    SQL基础(四)-- SQL连接时去掉重复数据
  • 原文地址:https://www.cnblogs.com/nq31/p/13956664.html
Copyright © 2020-2023  润新知