В чем разница между формами данных, x-www-form-urlencoded и raw в приложении Postman Chrome?

Я использую расширение Postman Chrome для тестирования веб-службы. Для ввода данных доступны три варианта. Я предполагаю, что это сырье для отправки JSON. В чем разница между двумя другими, данными формы и x-www-form-urlencoded?

Ответ 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:

enter image description here

Форма-данные

заголовок

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"}