Есть ли стандартизированный способ отправки массива с 0 или 1 элементом с использованием тела x-www-form-urlencoded в HTTP-запросе POST?

При отправке HTTP-запроса со значениями формы в x-www-form-url-encoded, он становится простой строкой пары ключей, разделенной & символы.

Итак, отправьте такую ​​форму:

foo: bar
apple: red

Результатом будет следующая строка:

foo=bar&apple=red

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

colors: [red, blue, green]

Становится

colors=red&colors=blue&colors=green

Но когда API ожидает массив в запросе, использующем это тело и этот тип данных, существует ли стандартный способ объявить, что свойство является массивом только с одним элементом или с 0 элементами?

Как это:

foo: [bar]

Или

thingsJonSnowKnows: []

2 ответа

Я предлагаю добавить отдельную пару ключ-значение для хранения размера. также см. Как передать массив в строке запроса? возможное решение - значение с разделителями-запятыми для массива

Это немного зависит от вашего определения стандарта, но существует очень распространенный формат, поддерживаемый множеством различных фреймворков и языков. Создание массива из 1 элемента выглядит так:

foo[]=bar

Я не думаю, что можно выразить пустой массив, но с его помощью можно создавать объекты.

Я считаю, что этот синтаксис исходит из PHP, но я видел это также в средах Java и Javascript. Я не смог найти четкую спецификацию, описывающую этот точный формат в документации PHP.

Другие вопросы по тегам