Допустим, у меня есть REST API с ресурсом пользователя.Существует три метода работы с ресурсом пользователя: POST
для создания, GET
для загрузки и PATCH
для изменения.Все методы работают с одним и тем же типом пользователя, но имеют разные обязательные свойства - при создании пользователя с использованием POST
все поля запроса, кроме идентификатора пользователя, являются обязательными, при загрузке с использованием GET
все поля ответа являются обязательными, включая идентификатор,при изменении с помощью PATCH
все поля запроса являются необязательными и могут иметь значение NULL.
Можно ли кратко описать это в OpenAPI / Swagger?Я хотел бы описать тип User только один раз, а затем только сказать, какие поля являются обязательными / обнуляемыми для каждого метода.Примерно так, в псевдокоде:
definitions:
User:
properties:
id:
type: integer
name:
type: string
…
paths:
/users
post:
request:
schema: User
required: [name, …]
nullable: […]
response:
schema: User
required: [id, name, …]
nullable: […]
/users/{id}:
get:
response:
schema: User
required: [id, name, …]
nullable: […]
patch:
request:
schema: User
required: []
nullable: [name, …]
Таким образом, мне не пришлось бы повторять все определения полей при наличии конкретных ограничений, описанных для каждого метода.Это возможно?Имеет ли это смысл?