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

    一. 自动生成接口文档配置#

    Copy
    1. 安装:pip3 install coreapi
    2. 一般在总路由中配置
        from rest_framework.documentation import include_docs_urls
        urlpatterns = [
            path('docs/', include_docs_urls(title='站点页面标题'))
        ]
    3. settings.py中到 REST_FRAMEWORK 中声明
        REST_FRAMEWORK = {
                "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.AutoSchema",
                # 下面的这个默认的配置不知道为什么不能使用????
                # 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.openapi.AutoSchema',
            }
    4. 浏览器url地址栏输入: http://127.0.0.1:8010/docs/
        抛出异常:  则表示没有在settings.py中声明 DEFAULT_SCHEMA_CLASS
            AttributeError at /docs/
            'AutoSchema' object has no attribute 'get_link'
    

    二. 文档描述说明的定义位置#

    Copy
    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:
            修改图书的阅读量
            """
    

    三. 访问接口文档网页#

    浏览器访问 127.0.0.1:8000/docs/,即可看到自动生成的接口文档。

    接口文档网页

    如果遇到报错

    Copy
    #AttributeError: 'AutoSchema' object has no attribute 'get_link'
    REST_FRAMEWORK = {
     'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
        # 新版drf schema_class默认用的是rest_framework.schemas.openapi.AutoSchema
    }
    

    两点说明#

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

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

    Copy
    class Student(models.Model):
        ...
        age = models.IntegerField(default=0, verbose_name='年龄', help_text='年龄')
        ...
    

    Copy
    class StudentSerializer(serializers.ModelSerializer):
        class Meta:
            model = Student
            fields = "__all__"
            extra_kwargs = {
                'age': {
                    'required': True,
                    'help_text': '年龄'
                }
            }
    
  • 相关阅读:
    javascript实现根据时间段显示问候语的方法
    视觉会议收藏一
    cv的期刊和会议
    CVPR2016 Paper list
    CVPR 2017 Paper list
    关注的牛人
    cvpr2016论文
    linux命令技巧:scp多文件远程拷贝
    linux命令技巧--df -lh:查看磁盘占用情况
    spark--01编译安装spark1.3.1
  • 原文地址:https://www.cnblogs.com/Tornadoes-Destroy-Parking-Lots/p/13390951.html
Copyright © 2011-2022 走看看