SWAGGER 2 Наследование для объектов запроса и ответа от одного базового объекта - PullRequest
0 голосов
/ 30 ноября 2018

В моем Spring API, разработанном с помощью Swagger 2.0, я пытаюсь создать Наследование с использованием Swagger.Я хочу создать базовый объект, который будет иметь общие свойства для объектов запроса и ответа.Я попытался сделать это, как в примере ниже:

CategoryResponse:
  allOf:
    - $ref: '#/definitions/Category'
    - type: object
      properties:
        id:
          type: integer
          example: '1'          
CategoryRequest:
  type: object
  allOf:
    - $ref: '#/definitions/Category'         
Category:
  discriminator: nameCategory
  type: object
  properties:
    nameCategory:
      type: string
      example: Games

Проблема в том, что я получаю ошибку Bad Request при попытке POST или PUT нового объекта CategoryRequest.Он даже не доходит до API-контроллера, поэтому я думаю, что проблема может быть в определении модели выше.Я перепробовал много вариантов, но ни один из них не сработал.Тем не менее, когда я пытаюсь получить список категорий или одну категорию по идентификатору, я могу это сделать (Мой CategoryResponse работает и прекрасно расширяет категорию).

Кто-нибудь знает правильный способ созданияэта структура с использованием наследования общей базовой модели, как для объектов запроса и ответа?

Заранее спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

id выглядит как автоматически сгенерированное и доступное только для чтения свойство.В этом случае вам не нужно наследование - вы можете использовать одну схему Category и пометить id как readOnly: true.

Category:
  type: object
  properties:
    nameCategory:
      type: string
      example: Games
    id:
      type: integer
      readOnly: true  # <-----
      example: 1

Из Спецификации OpenAPI :

readOnly

Объявляет свойство как «только для чтения».Это означает, что он МОЖЕТ быть отправлен как часть ответа, но НЕ ДОЛЖЕН быть отправлен как часть запроса.

...