Я пишу определение Swagger
на swaggerhub . Есть возможность делиться моделями между несколькими Swaggers. После того, как сваггеры завершены, есть возможность загрузить решенный сваггер с импортированными связанными определениями.
Моя проблема в том, что эта разрешенная загрузка добавляет к моделям узел example
, который по какой-либо причине переопределяет каждый атрибут, когда мы снова копируем этот новый Swagger в редактор.
Предположим, у нас есть следующий образец
---
swagger: "2.0"
info:
description: ""
version: 1.0.0
title: title
host: "example.com"
basePath: /
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
/test-service:
post:
tags:
- test-service
operationId: test-service
parameters:
- in: body
name: body
description: body
required: true
schema:
$ref: '#/definitions/A'
responses:
201:
description: success
schema:
$ref: '#/definitions/A'
definitions:
A:
type: object
properties:
a1:
type: string
a2:
type: string
Ниже показано, как это отображается в Swagger UI
,
Это правильный путь, однако, когда в модели есть пример узла A
, в пользовательском интерфейсе отображаются только примерные атрибуты,
Вот изменение, которое я имею в виду
A:
type: object
properties:
a1:
type: string
a2:
type: string
example:
ex1: Hello
ex2: World
Теперь, если я импортирую это изменение в редакторе, пропадут только атрибуты ex1
и ex2
и действительные атрибуты a1
и a2
.
Проблема обостряется, когда мы получаем наследство.
Что происходит в зависимости от того, какой самый нижний узел в иерархии имеет example
только атрибуты, перечисленные в атрибутах, которые отображаются в пользовательском интерфейсе, а не все атрибуты
Вот пример с
Теперь давайте введем атрибут example
в C
. После добавления атрибута example
на любом уровне все остальные атрибуты игнорируются.
Вот ссылка на example
документацию по атрибутам https://swagger.io/docs/specification/2-0/adding-examples/.
Там нет описания этого странного поведения.