Индексированный массив в запросе

#openapi #swagger-php

#openapi #swagger-php

Вопрос:

Я изо всех сил пытаюсь написать аннотацию параметра для поля, которое должно было бы привести к индексированному массиву целых чисел:

 voucher_products[0]: 23
voucher_products[1]: 102
voucher_products[2]: 233
 

Я попробовал следующее

  *     @OAParameter(
 *         name="voucher_products",
 *         in="query",
 *         description="",
 *         required=false,
 *         @OASchema(
 *             type="array",
 *               @OAItems(
 *                 type="integer",
 *               )
 *         )
 *     ),
 
 

Я заполняю форму таким образом:
форма

Результат, который я получаю в параметрах строки запроса, является

 voucher_products: 23
voucher_products: 102
voucher_products: 233
 

Если я проверю это поле в $_POST , его конечное значение равно voucher_products=233 , поскольку это не превращается в массив.

Что я делаю не так?

Ответ №1:

Спецификация OpenAPI в настоящее время не имеет способа представления строк запроса, содержащих индексированный массив, такой как

 ?arr[0]=val1amp;arr[1]=val2amp;arr[2]=val3amp;...
 

Вот связанные с этим проблемы в репозитории спецификаций OpenAPI:
Являются ли индексы в массиве параметров запроса представимыми?
Поддержка глубоких объектов для параметров запроса со стилем deepObject

Однако, если ваш API может принимать массив только с квадратными скобками, но без индексов

 ?voucher_products[]=23amp;voucher_products[]=102amp;voucher_products[]=233
 

затем вы можете определить его как параметр с name="voucher_products[]" помощью .