django - 如何在 django-yasg 上添加前缀“token”?
问题描述
我已经安装django-rest-framework
并django-yasg
生成了 swagger 文档,当我尝试使用django-yasg
身份验证中的 ui 时,不使用标题Token
上的前缀,例如:Authentication
所需的标头django-rest-framework
:
“身份验证:令牌 XXX”
由 生成的标头django-yasg
:
“认证:XXX”
我也发现了这个问题;https://github.com/axnsan12/drf-yasg/issues/367
说我需要token
通过swagger-ui添加前缀,但是我该怎么做呢?
这是我的swagger settings
:
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'Token': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
},
},
'USE_SESSION_AUTH': False
}
如何在 swagger-ui 上设置前缀,以便用户必须编写它?
解决方案
据我所知,这就是drf-yasg
目前的能力。它只是不是为了支持JWT
令牌而设计的,因为它只实现了 openapi 2.0。
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'Bearer': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
}
}
}
这只是apiKey
供开发人员使用的一种变通方法bearer jwt
。(它似乎是作者首先在drf-yasg
github repo中的一个问题中编写的)。Openapi 2.0的SECURITY DEFINITION
包含apikey
,basic
和.oauth2
它没有包含jwt
token 的格式。
如果您想为您的 api 文档使用 swaager 并且还需要该Bearer
前缀,请尝试那些支持openapi 3.0的生成器,检查此链接,您会发现它本机支持 JWT Bearer。它看起来像这样:
{
"type": "http",
"scheme": "bearer",
"bearerFormat": "Bearer", # or whatever prefix you wish
}
作者在of的 repo中drf-yasg
推荐。drf-spectacular
readme.md
drf-yasg
如果您希望将 Swagger/OpenAPI 支持添加到新项目中,您可能需要查看 drf-spectacular,这是一个积极维护的新库,它共享该项目的大部分目标,同时使用 OpenAPI 3.0 模式。
OpenAPI 3.0 在可描述的 API 类型方面比 2.0 提供了更多的灵活性。drf-yasg 不太可能很快获得对 OpenAPI 3.0 的支持。
就像这张照片一样。 drf-壮观的演示
老实说,我会说 drf-yasg 现在正在减慢其开发过程。也许作者正在开发以支持openapi 3.0。我最近发现了一个错误,然后我发布了一个问题。后来我修复了那个bug并做了一个pr,但是已经11天了,根本没有任何回复。似乎drf-yasg
需要一些时间来支持 openapi 3.0。
推荐阅读
- php - PHP Guzzle - 如果我只是将它用于中间件,我需要设置一个处理程序吗?
- python - 哪些 Continuum API 可用于跟踪工件、包和发布?
- python - Amazon Transcribe on S3 Upload:“[错误] BadRequestException:提供的 URI 未指向 S3 对象”
- c# - 如何在设计自动化 api 中为 revit 创建多个文件并将结果下载为一个 zip 文件
- javascript - 如何在 Loopback/Node.Js 中创建角色
- google-apps-script - GMail 将图片直接添加到电子邮件中
- javascript - 用户输入后显示图像
- java - 如何从重定向 url 获取验证码?OAuth2
- c# - 如何在松弛对话框选项中显示图像
- php - 为什么 json_decode 会转换我的 unicode 字符串?