我已经安装了django-rest-framework
和django-yasg
来生成swagger文档,当我尝试使用django-yasg
中的用户界面时,身份验证不使用Authentication
头上的前缀Token
,例如:django-rest-framework
所需的标头:
“认证:令牌XXX”
由django-yasg
生成的标题:
“认证:三十”
我也发现了这个问题;https://github.com/axnsan12/drf-yasg/issues/367说我需要通过swagger-ui添加前缀token
,但是我该怎么做呢?
这是我的swagger settings
:
SWAGGER_SETTINGS = {
'SECURITY_DEFINITIONS': {
'Token': {
'type': 'apiKey',
'name': 'Authorization',
'in': 'header'
},
},
'USE_SESSION_AUTH': False
}
我如何在swagger-ui上设置前缀,以便用户不必编写它?
5条答案
按热度按时间chhkpiq41#
据我所知,这就是
drf-yasg
现在所能做到的,只是它的设计不支持JWT
令牌,因为它只实现了openapi2.0。这只是开发者使用
bearer jwt
的一个变通方法。(似乎是作者在drf-yasg
github repo的一期中首次写的)Openapi 2.0的SECURITY DEFINITION
包括apikey
,basic
和oauth2
。它不包括jwt
令牌的格式。如果你想在API文档中使用swaager,并且还需要
Bearer
前缀,请尝试那些支持openapi 3.0的生成器,点击这个链接,你会发现它本机支持JWT Bearer。drf-yasg
的作者在drf-yasg
的repo的readme.md
中推荐了drf-spectacular
。如果您希望在新项目中添加Swagger/OpenAPI支持,您可能需要查看drf-spectual,这是一个积极维护的新库,在使用OpenAPI 3.0模式时,它与本项目的大部分目标相同。
OpenAPI 3.0在可描述的API类型方面提供了比2.0更多的灵活性。drf-yasg不太可能很快获得对OpenAPI 3.0的支持。
就像这张照片drf-spectacular demo
老实说,drf-yasg现在的开发速度变慢了,可能是为了支持openapi 3.0吧,最近发现了一个bug,然后发了一个问题,后来我修复了这个bug,做了一个pr,但是已经11天了,一点回复都没有,看来
drf-yasg
需要一定的时间来支持openapi 3.0。mctunoxg2#
在swagger-ui中键入“令牌XXXXXXXXXXXXXXX”。
ivqmmu1c3#
用这个
参见图像
在“授权”屏幕上添加
承载人xxxxx
[1]: https://i.stack.imgur.com/UG0Dl.png
ssgvzors4#
设置后用DRF_YASG解决此问题
授权时添加承载者现在有效,即
无记名
其中xxxx是您的访问令牌
rt4zxlrg5#
在右上角,你有一个“授权”按钮,点击它并粘贴令牌,就像我在这个截图中所做的那样。