Повторно использовать определение OpenAPI / Swagger с другими правилами проверки? - PullRequest
0 голосов
/ 05 июня 2018

Допустим, у меня есть 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, …]

Таким образом, мне не пришлось бы повторять все определения полей при наличии конкретных ограничений, описанных для каждого метода.Это возможно?Имеет ли это смысл?

...