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

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

3 ответов


Это разные типы содержимого формы, определенные W3C. Если вы хотите отправить простой текст / ASCII данные, то x-www-form-urlencoded будет работать. Это значение по умолчанию.

но если вам нужно отправить текст без ASCII или большие двоичные данные,форма-Сведения для этого.

можно использовать Raw Если вы хотите отправить обычный текст или JSON или любую другую строку. Как следует из названия, Postman отправляет ваши необработанные строковые данные без варианта исполнения. Тип отправляемых данных можно задать с помощью заголовка content-type из раскрывающегося списка.

Бинарные может использоваться, когда вы хотите прикрепить нетекстовые данные к запросу, например, видео/аудио файл, изображения или любой другой файл двоичных данных.

см. эту ссылку для дальнейшего чтения: формы в HTML документах


Это объясняет лучше: Postman docs

запрос тела

при построении запросов вы будете иметь дело с редактором тела запроса много. Postman позволяет отправлять почти любой HTTP-запрос (если вы не можете отправить что-то, сообщите нам об этом!). Редактор тела разделен на 4 области и имеет различные элементы управления в зависимости от типа тела.

форма-Сведения

multipart / form-data по умолчанию кодирование веб-формы используется для передачи данных. это имитирует заполнение формы на веб-сайте и ее отправку. Редактор форм-данных позволяет задать пары ключ / значение (с помощью редактора ключ-значение) для данных. Вы можете прикреплять файлы к ключу. Обратите внимание, что из-за ограничений спецификации HTML5 файлы не хранятся в истории или коллекциях. Вам нужно будет снова выбрать файл во время отправки запроса.

urlencoded

эта кодировка то же, что и в параметрах URL. Вам просто нужно ввести пары ключ / значение, и почтальон будет правильно кодировать ключи и значения. Обратите внимание, что вы не можете загружать файлы через этот режим кодирования. Возможно, существует некоторая путаница между данными формы и urlencoded, поэтому сначала проверьте свой API.

raw

необработанный запрос может содержать что угодно. Postman не касается строки, введенной в Редакторе raw, за исключением замены переменных среды. Все, что вы put in the text area отправляется с запросом. Редактор raw позволяет задать тип форматирования вместе с правильным заголовком, который следует отправить вместе с телом raw. Вы также можете установить заголовок Content-Type вручную. Обычно вы отправляете данные XML или JSON здесь.

бинарные

двоичные данные позволяют отправлять вещи, которые вы не можете ввести в Postman. Например, изображения, аудио или видео файлы. Вы также можете отправлять текстовые файлы. Как упоминалось ранее в раздел form-data, вам придется повторно присоединить файл, если вы загружаете запрос через историю или коллекцию.

обновление

Как указал ВКК на WHATWG spec say urlencoded является типом кодировки по умолчанию для форм.

недопустимым значением по умолчанию для этих атрибутов является состояние application / x-www-form-urlencoded. Недостающее значение по умолчанию для атрибута enctype также является состоянием application/x-www-form-urlencoded.


multipart/form-data

Примечание. Пожалуйста, обратитесь к [RFC2388] за дополнительной информацией о загрузке файлов, включая проблемы обратной совместимости, отношения между "multipart/form-data" и другими типами контента, проблемы с производительностью и т. д.

пожалуйста, обратитесь к приложению для получения информации о проблемах безопасности для форм.

тип контента "application / x-www-form-urlencoded" неэффективен для отправки большого количества двоичные данные или текст, содержащий символы, отличные от ASCII. Тип содержимого "multipart / form-data" должен использоваться для отправки форм, содержащих файлы, данные, отличные от ASCII, и двоичные данные.

содержимое "multipart / form-data" следует правилам всех потоков данных multipart MIME, как описано в [RFC2045]. Определение "multipart / form-data" доступно в реестре [IANA].

сообщение "multipart/form-data" содержит ряд частей, каждая из которых представляет успешный управление. Детали отправляются агенту обработки в том же порядке, в котором соответствующие элементы управления отображаются в потоке документов. Границы деталей не должны встречаться ни в одном из данных; то, как это делается, выходит за рамки данной спецификации.

как и во всех типах multipart MIME, каждая часть имеет необязательный заголовок" Content-Type", который по умолчанию равен"text/plain". Агенты пользователей должны предоставить заголовок "Content-Type", сопровождаемый " кодировкой" параметр.

application / x-www-form-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, и двоичные данные.