python - 生成 API 文档 - 不使用 Django Rest
问题描述
我正在开发一个不使用 Django Rest 的 Django 项目。
在此代码库之上,我正在尝试构建一个框架来自动生成 swagger 文档。
从这个SO Post我可以得到可用的 URL:
from django.urls import get_resolver
urls = get_resolver().reverse_dict
urls
是 a MultiValueDict
,这里是 Dict 中的前几项:
MultiValueDict: {
<function create_demo at 0x10f6a3820>: [(
[('api/v1/create-demo', [])],
'api/v1//create\\-demo$', {}, {}
)],
'create_demo': [(
[('api/v1/create-demo', [])],
'api/v1/create\\-demo$', {}, {}
)],
<function users_detail at 0x10f67d280>: [(
[('api/v1/users/users/%(user_id)s', ['user_id'])],
'api/v1/users/users/(?P<user_id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$', {}, {'user_id': <django.urls.converters.UUIDConverter object at 0x10bc3c6a0>}
)],
'users_detail': [(
[('api/v1/users/users/%(user_id)s', ['user_id'])],
'api/v1/users/users/(?P<user_id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$', {}, {'user_id': <django.urls.converters.UUIDConverter object at 0x10bc3c6a0>}
)]
看起来这个 dict 的键是对视图函数的引用,后跟该函数的 url“名称”,值是包含相对 url 路径和参数的列表。
我的想法是遍历每个函数引用并为 swagger doc 创建一个条目。
在每个视图函数中,我将定义名为 RequestSchema 和 ResponseSchema 的变量。
理想情况下,我可以从函数引用中访问这些变量,并将该数据也添加到 swagger 文档中。
目标是让文档在视图功能更新时保持最新。即,如果我为特定功能更新 ResponseSchema,那将自动反映在文档中。
我的问题是:
- 这种方法是否有任何意义,还是有更好的方法来解决这个问题?
- 我不想重新发明轮子,是否有一个包已经做了类似的事情?
- 切换到 Django Rest 不是一种选择
- 如果没有,我可以/我如何访问函数中定义的 RequestSchemas 和 ResponseSchemas vars,当循环从 URLResolver 返回的函数引用时?
解决方案
推荐阅读
- kubernetes - 要求 k8s pod 在特定节点上运行之前具有特定标签
- javascript - 为什么选择 Next.js API?
- html - 电子邮件模板 Outlook 对齐问题
- reactjs - Next JS i18Next 构建 serverSideTranslations 错误
- html - 为什么类属性不覆盖通用属性?
- sbt - 如何将 scalajs 跨项目模块(js、jvm、共享)拆分为子项目?
- c# - Visual Studio 2019 中的 .Net Standard 1.0 类库
- c# - 如何获取 .csproj 文件中两个日期之间的差异?
- python - 为什么import语句有语法错误
- c++ - 指针与参考