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

    一、自动生成接口文档

    REST framework可以自动帮助我们生成接口文档。接口文档以网页的方式呈现。自动接口文档能生成的是继承自APIView及其子类的视图。

    1、安装依赖

    pip3 install coreapi

    2、设置接口文档访问路径

    from rest_framework.documentation import include_docs_urls
    
    urlpatterns = [
        url('docs/', include_docs_urls(title='API接口文档')),
    ]

    3、文档描述说明的定义位置

    ①单一方法的视图,可直接使用类视图的文档字符串,如

    class Test(APIView):
        """
        返回所有图书信息.
        """

    ②包含多个方法的视图,在类视图的文档字符串中,分开方法定义,如

    class Test(APIView):
        """
        get:
        返回所有图书信息.
        post:
        新建图书.
        """

    ③对于视图集ViewSet,仍在类视图的文档字符串中分开定义,但是应使用action名称区分,如

    class Publish(ModelViewSet):
        """
        get:
        返回图书列表数据
    
        post:
        创建图书数据
    
        delete:
        删除图书数据
    
        retrieve:
        修改图书数据
        """
        queryset = models.Publish.objects.all()
        serializer_class = PublishSerializers

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

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

    class Publish(models.Model):
        name = models.CharField(max_length=32, help_text='名字')
        city = models.CharField(max_length=64, help_text='城市')

    或者

    class PublishSerializer(serializers.ModelSerializer):
        class Meta:
            model = Publish
            fields = "__all__"
            extra_kwargs = {
                'name': {
                    'required': True,
                    'help_text': '名字'
                }
            }

    接口文档展示

    二、typing模块

    提高代码健壮性,限制返回值类型的

    1、前言

    Python是一门弱类型的语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题。

    2、typing模块的作用

    类型检查,防止运行时出现参数和返回值类型不符合。
    作为开发文档附加说明,方便使用者调用时传入和返回参数类型。
    该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。
    
    # 注意:typing模块只有在python3.5以上的版本中才可以使用,pycharm目前支持typing检查

    3、typing模块的常用方式

    from typing import List, Tuple, Dict
    
    def test(a: int, string: str, f: float, b: bool) -> Tuple[List, Tuple, Dict, bool]:
        ll=[1,2,3,4]
        tup = (string, a, string)
        dic = {"xxx": f}
        boo = b
        return ll, tup, dic, boo
    
    print(test(12, "lqz", 2.3, False))
    注意:
        在传入参数时通过'参数名:类型'的形式声明参数的类型;
        返回结果通过'-> 结果类型'的形式声明结果的类型。
        在调用的时候如果参数的类型不正确pycharm会有提醒,但不会影响程序的运行。
        对于如list列表等,还可以规定得更加具体一些,如:'-> List[str]',规定返回的是列表,并且元素是字符串。
  • 相关阅读:
    T-SQL 查询出某个列总值大于X的数据
    ASP.NET 的IP帮助类
    对于一些Http远程连接Api安全的看法;
    老生常谈之SQL Server (行转列,列转行)
    关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案
    linq to entity asp.net mvc 多字段排序
    MVC过滤器之添加LoginAttribute,浏览器提示:重定向次数太多
    层级多选框(html+javascript+bootstrap),全层全选和多选
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller 解决
    Andriod Studio adb.exe,start-server' failed -- run manually if necessary 解决
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11176380.html
Copyright © 2011-2022 走看看