自动生成文档接口
一、自动生成接口文档
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]',规定返回的是列表,并且元素是字符串。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现