是否可以在一个由Swagger-UI呈现的API规范中出现多次相同的路径?
我应该创建单独的api规范并加载两个Swagger-UI实例吗?处理这个问题的最佳方法是什么?
对于前。我有一个名为/ oauth / token的端点,我想用OAuth授权代码流的一组参数和带有不同参数集的client_credentials流的相同端点/ oauth / token文档进行记录。
/oauth/token:
post:
summary: token endpoint for authorization_code flow
parameters:
- name: code
type: string
description: Required for Authorization Code Flow
in: formData
required: true
- name: grant_type
type: string
description: Grant Type should be specified as authorization_code
in: formData
required: true
default: authorization_code
enum:
- authorization_code
- client_credentials
- name: client_id
type: string
description: Consumer Key
in: formData
required: true
- name: client_secret
type: string
description: Consumer Secret
in: formData
required: true
- name: endOtherSessions
in: formData
type: boolean
required: false
default: false
description: Optional parameter. Default is false - do not allow concurrent login. Send true to end any other user sessions.
tags:
- OAuth2 Authorization Code
client_credentials流的相同端点
/oauth/token2:
post:
summary: token for client credentials
parameters:
- name: grant_type
type: string
description: Grant Type should be specified as client_credentials
in: formData
required: true
default: client_credentials
enum:
- authorization_code
- client_credentials
- name: client_id
type: string
description: Consumer Key
in: formData
required: true
- name: client_secret
type: string
description: Consumer Secret
in: formData
required: true
tags:
- OAuth2 Client Credentials
答案 0 :(得分:2)
由于问题是关于OAuth2而不是具有不同参数的单个端点,因此解决方案实际上是不同的。
Swagger有一种特定的方式来记录授权方法,包括4种常见的OAuth2流程。
使用位于顶部Security Definitions Object的Swagger object来描述这些内容。
在其中,您可以定义一个或多个OAuth2流。规范本身提供了implicit
流的样本,但其他规则遵循类似的结构。区别在于提供了哪些字段,即authorizationUrl
和tokenUrl
(取决于流类型)。
完成后,您可以指定所需的安全方案。您可以在Swagger object或Operation level上为所有操作指定它。
规范允许您一起定义一组安全方法,或者用户可以在给定的集合之间进行选择。