#openapi #springfox #openapi-generator
Вопрос:
Сгенерированный swagger.json отсутствует компонент securityscheme. Когда я копирую URL — адрес json и вставляю его в редактор swagger, я получаю-введите описание изображения здесь
Сгенерированный yaml в файле swagger.json выглядит следующим образом —
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
Как получить компонент securityscheme в определении URL-адреса swagger.
Я использую oas 3.x и инструмент генератора openapi для генерации кода java.
Ответ №1:
В OpenAPI 3.0 массив серверов используется для указания одного или нескольких базовых URL-адресов для вашего API. серверы заменяет ключевые слова хост, базовый путь и схемы, используемые в OpenAPI 2.0. Каждый сервер имеет URL-адрес и необязательное описание в формате уценки.
https://swagger.io/docs/specification/api-host-and-base-path/