@ApiProperty пример массива типов openapi_context - PullRequest
2 голосов
/ 23 апреля 2020

Можно ли создать openapi_context "type" = "array" для @ApiProperty? Как правильно написать примерное значение для такого массива с помощью аннотаций? Я использую OAS3

/**
 * @ApiProperty(
 *     attributes={
 *      "openapi_context"={
 *        "type"="array",
 *        "example"="array example goes here"
 *      }
 *     }
 * )
 *
 * @var array<array>
 */

РЕДАКТИРОВАТЬ:

ожидаемый результат (который работает, когда я вводить его в тело запроса в SwaggerUI) составляет

    "my_array": {
      "key" : {
        "key1" : "value 1",
        "key2" : "value 2",
        "key3" : "value 3"
       }
     }

нет квадрата скобки есть

1 Ответ

1 голос
/ 23 апреля 2020

Я не уверен, что понимаю ваш вопрос, потому что я не знаю содержание вашего массива. Не стесняйтесь добавлять комментарии, если они не отвечают на ваш вопрос.

Тип массива

Примитивные типы данных, определенные в спецификации OpenApi описаны в этой главе . Нет никакого упоминания о массиве, конечно, потому что это не примитивный тип данных.

Потому что, если вы посмотрите на схему 3.0 , Строка 203 описание схемы начинается. Массивы ( Строка 263 ) принимаются. Итак, да, можно создать openapi_context "type" = "array" для @ ApiProperty

Примеры И если вы посмотрите на схему 3.0 , Пример ( Строка 323 ) - объект без спецификации. Таким образом, вы можете написать, что вы хотите. Я не большой поклонник, и во многих документах используется пример для предоставления приемлемого значения.

Итак, я использую Swagger, который уважает OAS3. Массив документирован , и вы можете найти пример в комментариях. Сомме пример определяется в «комментариях». Эти примеры взяты из документации Swagger.

  • Пример массива целых чисел "[ 1, 2, 3, 4 ]"
  • Пример массива объекта "[ {"id": 5}, {"id": 8} ]"
  • Пример массива массива целых чисел "[ [1, 2], [3, 4] ]"
  • et c.

Для многомерного массива это контекст сваггера:

    # [ [1, 2], [3, 4] ]
    type: array
    items:
      type: array
      items:
        type: integer

Аннотация: :

    /**
     * @ApiProperty(
     *     attributes={
     *      "openapi_context"={
     *        "type"="array",
     *        "items" = {"type"="array", "items"={"type"={"integer","string"}}},
     *        "example"="[[1,'foo'], ['bar',4, 5]]"
     *      }
     *     }
     * )
     * @ORM\Column(type="array")
     */

Я создал объект со свойством, которое представляет собой многомерный массив, содержащий строку или целое число. (массив массива (строка или целое число)), и я делаю скриншот документации Swagger. Вроде бы все хорошо!

Результат выборки:

Sample screenshot

Сгенерированная схема:

Schema screenshot

Пример хорошо документирован , вы можете найти ответ для своего массива.

...