zoukankan      html  css  js  c++  java
  • drf 自动生成接口文档

    coreapi

       在drf中,能够支持我们自动生成API文档的模块有很多,这里使用的是coreapi

    pip install coreapi
    

       切记一点,coreapi生成的接口文档的接口只能是继承自APIView及其子类的视图接口。

    基本使用

    在线文档

       由于生成的文档是在线的,所以我们需要在主路由下进行配置。

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

    全局配置

       对djangorestframework进行配置,在全局项目文件夹下的settings.py中书写如下代码:

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

    接口说明

       接口一般分为三种,每次定义好接口后使用三双引号或三单引号注释为其进行说明,当说明完成后将会自动进行文档生成。

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

    访问展示

       接下来访问http://127.0.0.1:8000/docs/你将会看到所有的接口以及描述:

       image-20201104151550686

       需要注意的是,视图集ViewSet中的retrieve名称,在接口文档网站中叫做read

       另外,参数的Description需要在模型类或序列化器类的字段中以help_text选项定义,如:

    class Student(models.Model):
        ...
        age = models.IntegerField(default=0, verbose_name='年龄', help_text='这是学生的年龄信息,默认是0')
        ...
    

       或者你也可以在序列化器中进行定义:

    class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = "__all__"
            extra_kwargs = {
                'age': {
                    'required': True,
                    'help_text': '年龄'
                }
            }
    
  • 相关阅读:
    Zircon
    Linux与Windows的设备驱动模型对比
    c++11 右值引用、移动语义和完美转发
    【Java学习笔记之十四】Java中this用法小节
    【机器学习笔记之四】Adaboost 算法
    【Java学习笔记之十三】初探Java面向对象的过程及代码实现
    【Java学习笔记之十二】Java8增强的工具类:Arrays的用法整理总结
    【机器学习笔记之三】CART 分类与回归树
    【Java学习笔记之十一】Java中常用的8大排序算法详解总结
    【Java学习笔记之十】Java中循环语句foreach使用总结及foreach写法失效的问题
  • 原文地址:https://www.cnblogs.com/Yunya-Cnblogs/p/13926142.html
Copyright © 2011-2022 走看看