Трудно решить,
в настоящее время я отправляю данные как x-www-form-urlencoded с php lib curl with
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->arguments));
или
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->arguments);
первый вопрос: второй, кажется, больше длины контента, первое решение, вероятно, лучше?
Это практично для плоских сообщений, таких как:
{ "name": "John", "token": "2121232145", "code": "7", "data": "Hello" }
Но у меня также может быть поле данных, представляющее объект, в этом случае я поддерживал его, но выполнение этого (кодировка URL-кода Json) является ужасно подробными и уродливыми сообщениями,
С другой стороны я попробовал отправить его как application / json content-type
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($this->arguments));
длина контента больше для небольших сообщений, но со встроенным json, это явно лучше
Но x-www-form-urlencoded также близок к данным форм, которые мне нужно отправить, за исключением случаев, когда json встроен
Было бы не изящно иметь 2 разных метода анализа сервлетов в зависимости от типов контента, так есть ли другой вариант?
Здесь вы можете прочитать подобное обсуждение форматов.
Если структура закодированных данных гарантированно будет плоским списком пар имя-значение, x-www-form-urlencoded кажется достаточным. Если структура может быть (произвольно) сложной (например, вложенные списки или ассоциативные массивы), тогда определенно используйте JSON.
Что касается меня, я специалист KISS. В вашей ситуации JSON / XML / все это дополнительные затраты времени, памяти и циклов процессора. x-www-form-urlencoded data сочетают читаемость и компактность, поэтому я могу поспорить, что это ваш выбор.
x-www-form-urlencoded и JSON – это разные вещи. Хотя x-www-form-urlencoded является просто типом контента по умолчанию, который использовался для отправки формы на сервер, JSON представляет собой текстовый и общедоступный формат (стандартный), который используется для сериализации и отправки структурированных данных по сетевому соединению. Вы не должны сравнивать их.
вторая, кажется, большая длина контента, первое решение, вероятно, лучше?
Нет, нет решения, помеченного как «лучше». Как сказал сосновый босс, действительно зависит от того, какие данные вы отправляете и как разбирать / обрабатывать. JSON отлично подходит для отправки дополнительных данных с запросом.
Не думайте о содержании. Подумайте о структуре данных и данных, которую вы хотите отправить и обработать. Если вы просто хотите отправлять и обрабатывать структурированные данные между запросами и размером данных, просто используйте JSON. Он построен для этого.
Разница между контентом между двумя методами не будет частью проблемы, поскольку ваше приложение не является Facebook, Twitter или Google, как монстр. Преждевременная оптимизация – корень всего зла.