openapi - Swagger url 生成的 json 缺少“securityschemes”组件
问题描述
生成的 swagger.json 缺少 securityscheme 组件。当我复制 url json 并将其粘贴到 swagger 编辑器中时,我得到 - 在此处输入图像描述
swagger.json 文件中生成的 yaml 如下所示 -
openapi: 3.0.3
info:
title: Test YAML
version: 1.0.0
servers:
- url: 'localhost'
description: Inferred Url
tags:
- name: device-controller
description: the device API
- name: api-controller
description: API
paths:
/api/device:
get:
tags:
- ABCD
summary: Device SUMMARY.
description: Device DESCRIPTION.
operationId: getDevice
parameters:
- name: X-Request-ID
in: header
description: 'request Id, will return in the response headers, and appear in logs'
required: false
schema:
type: string
responses:
'200':
description: list of commands set
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommandSet'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
'403':
description: Forbidden
'404':
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- BasicAuth: []
components:
schemas:
CommandSet:
title: CommandSet
required:
- name
type: object
properties:
id:
type: string
format: uuid
example: 07da6fd8-5abc-4dc4-bcec-df309d123d17
name:
type: string
example: Deny
Error:
title: Error
type: object
properties:
code:
type: string
example: '400'
message:
type: string
example: Bad Request
它不见了
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
我在资源文件夹下定义了以下 yaml 文件
openapi: 3.0.2
info:
title: Policy APIs
description: 'Policy APIs for manage Policy Sets, authorization policies, authentication policies, and policy elements.'
version: 1.0.0
license:
name: Apache 2.0
url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
contact:
email: abc@gmail.com
servers:
- url: 'https://{server}/v1/policy'
variables:
server:
default: localhost
description: The host where the API is rooted
security:
- BasicAuth: []
paths:
/device-admin/command-sets:
parameters:
- $ref: '#/components/parameters/XRequestIdHeader'
get:
summary: Device Admin - Return list of command sets.
description: Device Admin - Return list of command sets.
operationId: getDeviceAdminCommandSets
tags:
- Device Administration - Command Set
responses:
'200':
description: list of commands set
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CommandSet'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
parameters:
XRequestIdHeader:
in: header
name: X-Request-ID
description: 'request Id, will return in the response headers, and appear in logs'
schema:
type: string
required: false
responses:
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The specified resource was not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example: '{code: 404, message: The specified resource was not found}'
schemas:
CommandSet:
type: object
required:
- name
properties:
name:
type: string
example: DenyAllCommands
description: Command used in Device Admin authorization policies
id:
type: string
format: uuid
example: 07da6fd8-5abc-4dc4-bcec-df309dbf4d17
Error:
type: object
properties:
code:
type: string
example: 400
message:
type: string
example: Bad Request
如何在 swagger url 定义中获取 securityscheme 组件。我正在使用 oas 3.x 和 openapi 生成器工具来生成 java 代码。
解决方案
在 OpenAPI 3.0 中,您可以使用 servers 数组为您的 API 指定一个或多个基本 URL。servers 替换了 OpenAPI 2.0 中使用的 host、basePath 和 scheme 关键字。每个服务器都有一个 url 和一个可选的 Markdown 格式描述。
https://swagger.io/docs/specification/api-host-and-base-path/
推荐阅读
- botframework - 如何在 LUIS Bot C# 中附加 AdaptiveCardFromJson?
- java - 在其他注解中使用注解
- javascript - Featherlight 画廊更改上一个和下一个箭头样式
- jquery - 我怎样才能做一个链接做一些jquery然后用一个新的目标去目的地
- r - DTM的结构
- git - 'git stripspace' 如何实际工作(文档无用)
- maven - 通过当前用户在 Docker 容器中运行 Maven
- vba - VB 宏只移动了我已读邮件的一半
- php - 如何选择名称中带有 - 连字符的表名
- delphi - Delphi Indy SSL 在中止时崩溃