解决drf-yasg中的SwaggerAPI无法正确分组问题
swagger是后台开发中很好用的交互式文档,Django原本的Django-Swagger已经停止维护了,现在一般用drf_yasg这个包来实现文档,它里面支持swagger和redoc两种,redoc是静态的,作为导出文档的话不错,不过一般我们用swagger,因为可以在文档里面调试,非常方便。 Drf里面有个东西是AutoSchema,可以自动扫描ViewSet和APIView这类可以提供接
目录5 个章节
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 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~
_EOF_
解决drf-yasg中的SwaggerAPI无法正确分组问题
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
经验总结-drf-yasg接口文档几个细节的自定义方式
drf-yasg是Django RestFramework的一个扩展, 可以根据路由生成OpenApi接口, 不过用起来和在Java平台和.NetCore有很多不一样的, 有些自定义的地方也比较麻烦, 不过看看文档也还好, 可以解决. 本文记录几个在实际开发中遇到的, 虽然是细节, 但是优化好细节可以给对接的同事带来很大的方便~ 顺带一提, Python写后台真的太快了, 一上午出几十个接口你能信
2022-04-04 · 0_Swagger与drf-yasg接口文档系列 · 约 1 分钟
2026年的Linux桌面环境选择,哪些适合Debian服务器?
选桌面环境像选早餐?Xfce稳如老狗,LXQt省到极致,GNOME/KDE硬件过剩才玩得起。平铺WM?键盘侠专属,鼠标滚不动的那种。
2026-03-11 · Reviews · 约 1 分钟
广州的夏天格外的热:9月实训心得小结
emmmm 不知不觉间来广州已经两个多星期了,本来打算一周写一篇小结的,结果上个星期感冒了在宿舍休息,前几天又中秋假期出去玩了,就一直拖着了...... 这个实训说好听是什么实习,结果就是学校和培训班合作,把我们塞到这里来集中体验培训,但是又不会教你很多真正有用的东西,谁要是觉得好就交钱上正式培训班,住宿贼贵,环境还贼差,还好只有一个月的时间,咬咬牙就过去了,其中的猫腻不言而喻...... 说说学
2021-12-18 · 杂七杂八 · 约 1 分钟
数据分析必备技能!3分钟教会你如何在PyQt中画好看的图表
先看看我们要实现的效果: 这是一个基于机器学习的数据分析结果展示,可以看到元素包括了坐标轴标注,两条折线和图例。 为了实现在PyQt中画图,我们用到了pyqtgraph这个绘图库,它是完全python实现的,与PyQt程序可以完美融合,并且具备很多优势: 拥有丰富的图形种类; 能够快速地实时更新绘图数据; 能够进行交互式的操作; 多种标记功能; 接下来进入正题,开始使用pyqtgraph来实现我们
2021-12-18 · PyQt · 约 1 分钟
讨论
共 0 条加载评论中…