Как отобразить пример вложенного массива для параметра тела в Swagger UI? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть вложенный массив в качестве параметра в теле моего метода POST:

 parameters:
 - in: body
   name: matrix
   description: blabla
   schema:
     type: array
     items:
       schema:
         type: array
         items:
           schema:
             type: double

Я хотел бы добавить пример для отображения этого массива в Swagger UI.Я попробовал следующее, однако это, похоже, не работает - ничего не отображается в качестве примера в поле body.Если я введу [[1.0, 2.0],[3.0, 4.0]] вручную в поле тела в Swagger UI, все будет работать нормально.

 parameters:
 - in: body
   name: matrix
   description: blabla
   schema:
     type: array
     items:
       schema:
         type: array
         items:
           schema:
             type: double
   example: [[1.0, 2.0],[3.0, 4.0]]

Обновление: после реализации рекомендаций Хелен вот как это выглядит:

1 Ответ

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

Вот правильная версия:

  parameters:
    - in: body
      name: matrix
      description: blabla
      schema:
        type: array
        items:
          type: array
          items:
            type: number
            format: double
        example: [[1.0, 2.0],[3.0, 4.0]]

Список исправлений:

  • Нет необходимости schema в items.
  • type: doubleдолжно быть type: number + format: double (см. Типы данных ).
  • Массив example должен находиться рядом с type: array в схеме.Сами параметры не поддерживают ключевое слово example.

Вы можете воспользоваться онлайн-редактором Swagger , чтобы проверить вашу спецификацию на наличие синтаксических ошибок, она помечает строки с ошибками.

Примечание для Swagger UI 2.x

Swagger UI 2.x не отображает примеры параметров тела, если тело является массивом примитивов.В последней версии Swagger UI 3.x такой проблемы нет.

Возможный обходной путь для 2.x - добавить ключ x-examples.default к параметру body и указать значение примера какстрока :

  parameters:
    - in: body
      name: matrix
      description: blabla
      schema:
        type: array
        items:
          type: array
          items:
            type: number
            format: double
        example: [[1.0, 2.0],[3.0, 4.0]]
      x-examples:
        default: '[[1.0, 2.0],[3.0, 4.0]]'  # <-----
...