OpenAPI повторно использует часть определения без определения новой
Предположим, что у меня есть это определение в определении yaml OpenApi
definitions:
User:
description: "User"
type: "object"
properties:
firstname:
type: "string"
lastname:
type: "string"
password:
type: "string"
email:
type: "string"
username:
type: "string"
Если в спецификации параметров мне нужны конкретные поля определения, как я могу ссылаться на них, не определяя другую модель, как показано ниже?
definitions:
UserLogin:
description: "User"
type: "object"
properties:
password:
type: "string"
email:
type: "string"
1 ответ
В своем вопросе вы используете definitions
ключевое слово, что намекает на то, что ваш вопрос об OpenAPI v2 aka. Чванство Для OpenAPI v3, определения, представленные ниже, должны быть определены в соответствующих разделах объекта Components.
Для этого вам нужно использовать Composition с ключевым словом allOf
, Здесь есть отличный пример, который относится к вашему вопросу. Сначала вы должны определить меньший объект, а затем включить его в определение большего размера следующим образом:
definitions:
UserLogin:
description: User Login
type: object
properties:
password:
type: string
email:
type: string
User:
allOf:
- $ref: '#/definitions/UserLogin'
- description: User
type: object
properties:
firstname:
type: string
lastname:
type: string
username:
type: string
Стоит отметить, что:
- Некоторые более легкие реализации могут не поддерживать
allOf
ключевое слово. - Использование композиции может повысить или уменьшить удобочитаемость документации в зависимости от сложности и выбора слов, используемых для именования схем.