В чем разница между
request.ContentType = "application / json; charset = utf-8";
и
webRequest.ContentType = "application / x-www-form-urlencoded";
В чем разница между
request.ContentType = "application / json; charset = utf-8";
и
webRequest.ContentType = "application / x-www-form-urlencoded";
Ответы:
В первом случае сообщается веб-серверу, что вы публикуете данные JSON, как показано ниже:
{ Name : 'John Smith', Age: 23}
Второй вариант - сообщить веб-серверу, что вы будете кодировать параметры в URL-адресе, как показано ниже:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
может привести к путанице на сервере (в моем случае Elixir использует Poison) и привести к неуместному разбору объекта (он каким-то образом преобразует вложенный массив объектов на карту, а не список). Использование application/json
должно быть правильным выбором в этом случае.
webRequest.ContentType = "application / x-www-form-urlencoded";
Откуда взято имя application / x-www-form-urlencoded ?
Если вы отправляете HTTP- запрос GET , вы можете использовать параметры запроса следующим образом:
http://example.com/path/to/page
? Имя = хорек и цвет = фиолетовый
Содержимое полей кодируется в виде строки запроса. В application/x-www-form-
urlencoded
названии «S приходит из предыдущего параметра запроса URL , но параметры запроса в где теле запроса вместо URL.
Все данные формы отправляются в виде длинной строки запроса. Строка запроса содержит пары имя- значение, разделенные символом &
например, field1 = value1 & field2 = value2
Это может быть простой запрос, называемый простым - не вызывайте предполетную проверку
Простой запрос должен иметь некоторые свойства. Вы можете посмотреть здесь для получения дополнительной информации. Одним из них является то, что для заголовка Content-Type разрешено только три значения для простых запросов
3. Для в основном плоских деревьев параметров проверяется и проверяется application / x-www-form-urlencoded.
request.ContentType = "application / json; charset = utf-8";
axios и superagent , две из наиболее популярных HTTP-библиотек npm, по умолчанию работают с телами JSON.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Теперь, если запрос не является простым запросом , браузер автоматически отправляет HTTP-запрос перед исходным методом OPTIONS, чтобы проверить, безопасно ли отправлять исходный запрос. Если все в порядке, то отправьте актуальный запрос. Вы можете посмотреть здесь для получения дополнительной информации.
x-www-form-urlencoded
для запросов AJAX, таких как голосование и т. Д. Ответ отправленJSON
. Я думаю, что лучше иметь симметричную пару запрос / ответ, т.е. оба JSON.