Надеемся, что этот вопрос остается одним и тем же.
Я создаю спецификацию чванства и хочу иметь возможность не только повторно использовать определения оптом (то есть, что делает $ref
),но создайте эти определения из еще более простых ссылок.
Например, скажем, я хочу описать концепцию assetId
как параметра и ответа.Я мог бы сделать что-то вроде этого:
parameters:
assetId:
name: assetId
in: path
description: Identifier of the asset
type: integer
responses:
assetId:
description: Identifier of the asset
type: integer
и потянуть #/parameters/assetId
и #/responses/assetId
для их соответствующих разделов, но у меня все еще есть неизбежное дублирование некоторых свойств (а именно description
иtype
)
То, что я хотел бы сделать, это разбить каждую из них на атомарные части, а затем составить определения параметров и ответов в первую очередь из этих ссылок, что-то вроде:
swagger: "2.0"
descriptions:
assetId:
descriptions: Identifier of the assetId
schemas:
assetId:
type: integer
format: int32
examples:
assetId:
example: 205778
paths:
/assets/{assetId}:
get:
parameters:
- name: assetId
in: path
$ref: '#/schemas/assetId'
$ref: '#/descriptions/assetId'
$ref: '#/examples/assetId'
responses:
'200'
и этот последний раздел по существу оценивается как:
...
parameters:
- name: assetId
in: path
type: integer
description: Identifier of the asset
format: int32
example: 205778
... но это не работает;ясно выдает ошибку, что у меня есть дубликат ключа с $refs
, но я не знаю, как еще подойти к нему.Может кто-нибудь показать мне, как сделать такой вид атомарного состава определений чванства?
ПРИМЕЧАНИЕ: я использую сваггер 2.0 на работе, так что если это можно сделать там, это было бы мило, но даже если это тольковозможно в 3.0, я все еще хотел бы знать.