Я использую расширение Postman Chrome для тестирования веб-сервиса.
Есть три варианта ввода данных.
Я думаю, что raw
для отправки JSON.
В чем разница между двумя другими, form-data
и x-www-form-urlencoded
?
Я использую расширение Postman Chrome для тестирования веб-сервиса.
Есть три варианта ввода данных.
Я думаю, что raw
для отправки JSON.
В чем разница между двумя другими, form-data
и x-www-form-urlencoded
?
Ответы:
Это разные типы контента формы, определенные W3C. Если вы хотите отправить простые текстовые / ASCII-данные, тогда сработает x-www-form-urlencoded . Это по умолчанию.
Но если вам нужно отправить не ASCII текст или большие двоичные данные, форма-данные для этого.
Вы можете использовать сырье если вы хотите отправить простой текст или JSON или любой другой вид строки. Как следует из названия, Postman отправляет ваши необработанные строковые данные без изменений. Тип данных, которые вы отправляете, может быть установлен с помощью заголовка типа содержимого из выпадающего списка.
Двоичные данные можно использовать, когда вы хотите прикрепить к запросу нетекстовые данные, например, видео / аудио файл, изображения или любой другой файл двоичных данных.
Обратитесь к этой ссылке для дальнейшего чтения: Формы в документах HTML
Это объясняет лучше: документы почтальона
Тело запроса
При построении запросов вы часто будете иметь дело с редактором тела запроса. Почтальон позволяет отправлять практически любые HTTP-запросы (если что-то не получается, дайте нам знать!). Редактор тела разделен на 4 области и имеет различные элементы управления в зависимости от типа тела.
форм-данных,
multipart / form-data - кодировка по умолчанию, используемая веб-формой для передачи данных.Это имитирует заполнение формы на веб-сайте и ее отправку. Редактор данных формы позволяет вам установить пары ключ / значение (используя редактор ключ-значение) для ваших данных. Вы также можете прикрепить файлы к ключу. Обратите внимание, что из-за ограничений спецификации HTML5 файлы не сохраняются в истории или коллекциях. Вам нужно будет снова выбрать файл во время отправки запроса.urlencoded
Эта кодировка такая же, как и в параметрах URL. Вам просто нужно ввести пары ключ / значение, и почтальон будет правильно кодировать ключи и значения. Обратите внимание, что вы не можете загружать файлы через этот режим кодирования. Может быть некоторая путаница между данными формы и urlencoded, поэтому сначала проверьте с вашим API.
сырье
Необработанный запрос может содержать что угодно. Почтальон не трогает строку, введенную в редакторе raw, за исключением замены переменных окружения. Все, что вы помещаете в текстовую область, отправляется с запросом. Редактор raw позволяет вам установить тип форматирования вместе с правильным заголовком, который вы должны отправить с необработанным телом. Вы также можете установить заголовок Content-Type вручную. Обычно вы отправляете сюда данные XML или JSON.
двоичный
Двоичные данные позволяют отправлять вещи, которые вы не можете ввести в Почтальон. Например, изображения, аудио или видео файлы. Вы также можете отправлять текстовые файлы. Как упоминалось ранее в разделе данных формы, вам придется заново присоединить файл, если вы загружаете запрос через историю или коллекцию.
ОБНОВИТЬ
Как указывает VKK , в спецификации WHATWG говорится, что urlencoded является типом кодировки по умолчанию для форм.
Недопустимым значением по умолчанию для этих атрибутов является состояние application / x-www-form-urlencoded. Отсутствующим значением по умолчанию для атрибута enctype также является состояние application / x-www-form-urlencoded.
Content-Type: application/json
заголовком; а необработанные данные вводятся как json как {foo: bar}
с тем же Content-Type: application/json
заголовком?
многочастному / форм-данных,
Заметка. Пожалуйста, обратитесь к RFC2388 для получения дополнительной информации о загрузке файлов, включая проблемы обратной совместимости, взаимосвязь между «multipart / form-data» и другими типами контента, проблемы с производительностью и т. Д.
Пожалуйста, обратитесь к приложению для получения информации о проблемах безопасности для форм.
Тип содержимого «application / x-www-form-urlencoded» неэффективен для отправки большого количества двоичных данных или текста, содержащего символы не ASCII. Тип контента "multipart / form-data" должен использоваться для отправки форм, которые содержат файлы, данные не ASCII и двоичные данные.
Тип содержимого «multipart / form-data» следует правилам всех составных потоков данных MIME, описанным в RFC2045. . Определение «multipart / form-data» доступно в реестре [IANA].
Сообщение «multipart / form-data» содержит серию частей, каждая из которых представляет успешный элемент управления. Детали отправляются агенту обработки в том же порядке, в котором соответствующие элементы управления отображаются в потоке документов. Границы детали не должны встречаться ни в одной из данных; как это делается, выходит за рамки данной спецификации.
Как и во всех составных MIME-типах, каждая часть имеет необязательный заголовок «Content-Type», который по умолчанию равен «text / plain». Пользовательские агенты должны предоставить заголовок «Content-Type», сопровождаемый параметром «charset».
применение / х-WWW-форм-urlencoded
Это тип контента по умолчанию. Формы, представленные с этим типом содержимого, должны быть закодированы следующим образом:
Имена и значения элементов управления экранированы. Символы пробела заменяются на +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
% HH ', знак процента и две шестнадцатеричные цифры, представляющие код символа ASCII. Разрывы строк представляются в виде пар «CR LF» (т. Е. %0D%0A').
The control names/values are listed in the order they appear in the document. The name is separated from the value by
= = И пары «имя / значение» отделены друг от друга символом «&».
application/x-www-form-urlencoded
Тело HTTP-сообщения, отправляемого на сервер, по сути является одной гигантской строкой запроса - пары имя / значение отделяются амперсандом (&), а имена отделяются от значений символом равенства (=). Примером этого может быть:
MyVariableOne=ValueOne&MyVariableTwo=ValueTwo
Тип содержимого «application / x-www-form-urlencoded» неэффективен для отправки большого количества двоичных данных или текста, содержащего символы не ASCII. Тип контента "multipart / form-data" должен использоваться для отправки форм, которые содержат файлы, данные не ASCII и двоичные данные.
Вот несколько дополнительных примеров, чтобы увидеть необработанный текст, который Почтальон передает в запросе. Вы можете увидеть это, открыв консоль Postman:
заголовок
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
тело
key1=value1key2=value2
заголовок
Content-Type: application/x-www-form-urlencoded
тело
key1=value1&key2=value2
заголовок
Content-Type: text/plain
тело
This is some text.
заголовок
Content-Type: application/json
тело
{"key1":"value1","key2":"value2"}
binary
.