解决drf_yasg中的SwaggerAPI无法正确分组问题
2020-08-07 19:12
507 查看
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 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~
相关文章推荐
- 如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
- 导包正确情况下,@SpringBootTest报红无法导入问题解决
- VS2005 解决"应用程序配置不正确,程序无法启动"问题
- Discuz X3.1微信打通版,发布回复时出现提示:您的请求来路不正确或表单验证串不符,无法提交问题的解决
- 亚马逊AWS学习——EC2实例无法正确加载EBS卷问题的解决
- thinkPHP分组后模板无法加载问题解决方法
- 解决SharePoint无法正确显示文件类型图标问题
- phpcms V9 内联/关联链接 字符串较长链接无法正确替换的问题完美解决
- Win10应用商店打开的正确姿势解决无法打开问题
- 理解SQLSERVER中的排序规则,解决无法正确显示中文字符的问题
- 如何解决"应用程序无法启动,因为应用程序的并行配置不正确"问题
- 解决ASP.NET MVC的FileStreamResult无法正确返回数据问题
- 解决win10蓝牙耳机正确连接却无法播放网页声音的问题
- 关于Chrome浏览器那些事--1.打开Chrome浏览器崩溃问题,2.莫名出现应用程序无法启动,并行配置不正确问题3.解决Chrome浏览器提示开发者警告(请停用以开发者模式运行的扩展程序)。
- eCos系统无法正确链接到在C++源文件中自定义的cyg_user_start函数的问题和解决办法
- VS2008程序发布遇到“应用程序配置不正确,程序无法启动”问题的解决
- 解决ubuntu下无法正确显示GBK编码的问题
- 【Android】解决Fragment多层嵌套时onActivityResult无法正确回调的问题
- 维度用法设置不当导致的数据无法正确聚合的问题及解决
- 解决"应用程序无法启动,因为应用程序的并行配置不正确"问题