swagger是后台开发中很好用的交互式文档,Django原本的Django-Swagger已经停止维护了,现在一般用drf_yasg这个包来实现文档,它里面支持swagger和redoc两种,redoc是静态的,作为导出文档的话不错,不过一般我们用swagger,因为可以在文档里面调试,非常方便。

Drf里面有个东西是AutoSchema,可以自动扫描ViewSet和APIView这类可以提供接口的地方,和Spring里面基于注解的文档定义不同,一般在Drf里不需要手动配置每个接口的名称和说明,只要写在pydoc里面就行,不过这个AutoSchema也不是很准确,他是按照URL,特别是我们这种多级URL的,就会只按照第一级URL分组,所以就会出现下面这种未分组的效果。

未分组效果

分组后效果

解决方法

定义一个类,继承自SwaggerAutoSchema,用于自定义配置tags,我们自己决定要用哪一级的URL来做分组tag。

创建文件,本例是:config/swagger.py

from drf_yasg.inspectors import SwaggerAutoSchema

class CustomSwaggerAutoSchema(SwaggerAutoSchema):
def get_tags(self, operation_keys=None):
tags = super().get_tags(operation_keys) if "v1" in tags and operation_keys:
# `operation_keys` 内容像这样 ['v1', 'prize_join_log', 'create']
tags[0] = operation_keys[1] return tags

然后我们在settings里面配置一下:

# Swagger 配置
SWAGGER_SETTINGS = {
'DEFAULT_AUTO_SCHEMA_CLASS': 'config.swagger.CustomSwaggerAutoSchema',
}

这样就可以了~

参考资料

欢迎交流

我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

最新文章

  1. Mou常用快捷键
  2. ssh: command not found的解决办法
  3. awk 筛选特定长度的序列
  4. [转]Oracle数据库ASH和AWR的简单介绍
  5. 汉诺塔算法详解之C++
  6. 遮罩、警告框/弹框 - EasyUI
  7. Oracle内置函数内容整理
  8. poj 3641 Pseudoprime numbers Miller_Rabin测素裸题
  9. web开发小节.txt
  10. [转]cookie、session、sessionid 与jsessionid
  11. 如何开发auto complete 智能提示功能
  12. IceMx.Mvc 我的js MVC 框架四、试水植物大战僵尸(雏形版)
  13. linux iptables 配置
  14. JavaScript嗅探执行神器-sniffer.js,你值得拥有!
  15. SQL批处理与事务控制
  16. self_vs_default_definee_vs_receiver
  17. 本学期Windows编程微型技术博客上线!
  18. vue项目中使用md5.js及base64.js
  19. C++静态成员变量和静态成员函数
  20. TCP/IP协议栈概述及各层包头分析

热门文章

  1. 绕过CDN查找真实IP方法
  2. Web Scraping using Python Scrapy_BS4 - Introduction
  3. 集训作业 洛谷P1443 马的遍历
  4. 字符串学习总结(Hash & Manacher & KMP)
  5. ISE第三方编辑器的使用
  6. DJANGO-天天生鲜项目从0到1-015-部署-uWSGI+Nginx
  7. 1.pandas打开和读取文件
  8. python基础--迭代器、生成器
  9. 日志分析-利用grep,awk等文本处理工具完成(2019-4-9)
  10. python Scrapy 从零开始学习笔记(二)