Я использую расширение Postman Chrome для тестирования веб-службы. Для ввода данных доступны три варианта. Я предполагаю, что это сырье для отправки JSON. В чем разница между двумя другими, данными формы и x-www-form-urlencoded?
В чем разница между формами данных, x-www-form-urlencoded и raw в приложении Postman Chrome?
Ответ 1
Это разные типы контента формы, определенные W3C. Если вы хотите отправить простые текстовые /ASCII-данные, тогда сработает x-www-form-urlencoded. Это по умолчанию.
Но если вам нужно отправить не ASCII текст или большие двоичные данные, форма-данные для этого.
Вы можете использовать Raw, если вы хотите отправить простой текст или JSON или любой другой вид строки. Как следует из названия, почтальон отправляет ваши необработанные строковые данные без изменений. Тип данных, которые вы отправляете, может быть установлен с помощью заголовка типа содержимого из выпадающего списка.
Двоичные данные можно использовать, когда вы хотите прикрепить к запросу нетекстовые данные, например, видео/аудио файл, изображения или любой другой файл двоичных данных.
Обратитесь к этой ссылке для дальнейшего чтения: Формы в документах HTML
Ответ 2
Это объясняет лучше: Postman docs
Тело запроса
При построении запросов вы часто обращаетесь к редактору тела запроса. Почтальон позволяет отправлять практически любые HTTP-запросы (если вы не можете что-то отправить, сообщите нам об этом!). Редактор тела разделен на 4 области и имеет различные элементы управления в зависимости от типа тела.
форма-данные
multipart/form-data - это кодировка по умолчанию, используемая веб-формой для передачи данных.Это моделирует заполнение формы на веб-сайте и ее отправку. Редактор форм-данных позволяет вам устанавливать пары ключ/значение (используя редактор значений ключа) для ваших данных. Вы также можете прикреплять файлы к ключу. Обратите внимание, что из-за ограничений спецификации HTML5 файлы не хранятся в истории или коллекциях. Вам нужно будет снова выбрать файл во время отправки запроса.urlencoded
Эта кодировка совпадает с той, которая используется в параметрах URL. Вам просто нужно ввести пары ключ/значение, и почтальон правильно закодирует ключи и значения. Обратите внимание, что вы не можете загружать файлы через этот режим кодирования. Может возникнуть некоторая путаница между данными формы и urlencoded, поэтому сначала проверьте свой API.
сырец
Необработанный запрос может содержать что угодно. Почтальон не касается строки, введенной в исходный редактор, кроме замены переменных среды. Все, что вы помещаете в текстовую область, отправляется с запросом. Необработанный редактор позволяет вам установить тип форматирования вместе с правильным заголовком, который вы должны отправить с необработанным телом. Вы также можете вручную установить заголовок Content-Type. Обычно вы отправляете здесь данные XML или JSON.
двоичное
двоичные данные позволяют отправлять вещи, которые вы не можете ввести в Postman. Например, изображения, аудио или видео файлы. Вы также можете отправлять текстовые файлы. Как упоминалось ранее в разделе данных формы, вам нужно будет повторно привязать файл, если вы загружаете запрос через историю или коллекцию.
UPDATE
Как указано VKK, WHATWG spec говорит, что urlencoded is тип кодировки по умолчанию для форм.
Недействительным значением по умолчанию для этих атрибутов является состояние приложения /x -www-form-urlencoded. Недопустимое значение по умолчанию для атрибута enctype также является состоянием application/x-www-form-urlencoded.
Ответ 3
многочастному/форм-данных,
Заметка. Пожалуйста, обратитесь к 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
%0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by
%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 и двоичные данные.
Ответ 4
Вот несколько дополнительных примеров, чтобы увидеть необработанный текст, который Почтальон передает в запросе. Вы можете увидеть это, открыв консоль Postman:
Форма-данные
заголовок
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
тело
key1=value1key2=value2
х-WWW-форм-urlencoded
заголовок
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"}