Я определяю общие схемы для веб-служб и хочу импортировать их в раздел спецификации компонентов / схемы. Я хочу создать каноническую модель данных, общую для нескольких служб, чтобы избежать переопределения похожих объектов в каждом определении службы.
Есть ли способ сделать это? Есть ли механизм, аналогичный тому, что XSD делает со своим тегом импорта?





Вы можете напрямую использовать объекты внешней схемы OpenAPI $ref, используя абсолютные или относительные URL-адреса:
responses:
'200':
description: OK
schema:
$ref: './common/Pet.yaml'
# or
# $ref: 'https://api.example.com/schemas/Pet.yaml'
где Pet.yaml содержит, например:
type: object
properties:
id:
type: integer
readOnly: true
petType:
type: string
name:
type: string
required:
- id
- petType
- name
См. Использование $ ref для получения дополнительной информации.
Чтобы расширить ответ Хелен для тех, кто попадает сюда из Google, если Pet.yaml не является простым объектом, но имеет несколько таких объектов:
components:
schemas:
pet:
type: object
properties:
(...)
Вы можете ссылаться на это так:
$ref: './common/Pet.yaml#/components/schemas/pet'
Но что, если я хочу включить документ вместо ссылки на документ? Есть разница. Я не хочу щелкать. Эта проблема также была решена в XML (XLink). Я надеялся увидеть что-то подобное в стандарте OpenAPI.