В Open API 3 можно ли определить свойства схемы как доступные только для чтения и необязательные? - PullRequest
0 голосов
/ 07 декабря 2018

Я ищу несколько советов с моей спецификацией Open API 3.0, это пример моего объекта пользовательской схемы.Я надеюсь сделать некоторые поля необязательными, но не знаю, как их определить.

Когда я вставляю полную спецификацию в https://editor.swagger.io, она отображает все в «Попробуйтевне функции.Некоторые из других моделей больше, поэтому удаление всех связанных полей может быть довольно громоздким, может быть, они могут показать fieldName: {}, так что вы знаете, что они там доступны?Я не уверен, как это должно быть обработано.

Этот объект схемы используется для POST, PUT и GET как объект $ ref, я пытаюсь сделать его СУХИМЫМ, насколько это возможно.

Возможно, стоит также отметить, что из-за того, что инструмент пока не работает должным образом (или, может быть, это моя спецификация), я конвертирую конечный результат в swagger 2.0 для генерации библиотек Swift 4 и Angular Typescript.

ТакжеСтоит отметить, что я вызываю эти дополнительные поля с помощью API, используя параметр строки запроса include, например users? includes = person, person.telephone, creationByUser, repStats и т. д. Так что я хочу, чтобы они были включены только в запрос GET.

См. Прокомментированные поля ниже.

User:
  type: object
  properties:
    uuid:
      type: string
    username:
      type: string
    password:
      type: string
      format: password
    email:
      type: string
    personUuid:
      type: string
    createdAt:
      type: string
      format: date-time
    updatedAt:
      type: string
      format: date-time
    deletedAt:
      type: string
      format: date-time
    createdByUuid:
      type: string
    updatedByUuid:
      type: string
    # Relations.
    # I want these read only and optional on GET requests.
    # They can be there on PUT/POST requests, the server will simply
    # ignore them.
    person:
      $ref: '#/components/schemas/Person'
    createdByUser:
      $ref: '#/components/schemas/User'
    updatedByUser:
      $ref: '#/components/schemas/User'
    repStats:
      $ref: '#/components/schemas/RepStats'
...