Есть ли стандартизированный способ отправки массива с 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.