Postman Chrome: Was ist der Unterschied zwischen Formulardaten, x-www-form-urlencoded und raw

222

Ich verwende die Postman Chrome-Erweiterung zum Testen eines Webdienstes.

Für die Dateneingabe stehen drei Optionen zur Verfügung.

Ich denke, das rawist für das Senden von JSON.

Was ist der Unterschied zwischen den beiden anderen form-dataund x-www-form-urlencoded?

Rohan
quelle
11
Ab heute gibt es auch eine vierte Option, um Daten im Postman-Tool zu veröffentlichen - binary.
RBT

Antworten:

237

Dies sind verschiedene von W3C definierte Formularinhaltstypen. Wenn Sie einfache Text- / ASCII-Daten senden möchten , funktioniert x-www-form-urlencoded . Dies ist die Standardeinstellung.

Wenn Sie jedoch Nicht-ASCII-Text oder große Binärdaten senden müssen, sind die Formulardaten dafür.

Sie können Raw verwenden, wenn Sie einfachen Text oder JSON oder eine andere Art von Zeichenfolge senden möchten. Wie der Name schon sagt, sendet Postman Ihre Rohdaten für die Zeichenfolge unverändert. Der Datentyp, den Sie senden, kann mithilfe des Headers für den Inhaltstyp aus der Dropdown-Liste festgelegt werden.

Binär kann verwendet werden, wenn Sie der Anforderung nicht-textuelle Daten hinzufügen möchten, z. B. eine Video- / Audiodatei, Bilder oder eine andere binäre Datendatei.

Weitere Informationen finden Sie unter diesem Link: Formulare in HTML-Dokumenten

Basant Singh
quelle
was ist mit binär?
RBT
Ich habe ein Formular mit 4 Textfeldern und 1 Datei-Upload-Feld. Bitte schlagen Sie mir vor, welche Option (Formulardaten oder x-www-form-urlencoded) verwendet wird, um diesen Wert für 5 Felder im Postboten einzureichen. Danke im Voraus.
Kamlesh
@Kamlesh, entschuldigen Sie die verspätete Antwort. Das Schlüsselfeld von Form-Data in Postman enthält eine Dropdown-Liste, in der Sie auswählen können, ob es sich um ein Textfeld oder eine Datei handelt. Sie können es auf Datei setzen und dann eine Datei durchsuchen, um sie an den Körper anzuhängen. Hoffentlich hilft das.
Basant Singh
87

Dies erklärt besser: Postman docs

Text anfordern

Beim Erstellen von Anforderungen haben Sie häufig mit dem Anforderungshauptteil-Editor zu tun. Mit Postman können Sie fast jede Art von HTTP-Anfrage senden (Wenn Sie etwas nicht senden können, lassen Sie es uns wissen!). Der Body-Editor ist in 4 Bereiche unterteilt und verfügt je nach Body-Typ über unterschiedliche Steuerelemente.

Formulardaten

Multipart / Formulardaten sind die Standardcodierung, die ein Webformular zum Übertragen von Daten verwendet. Dies simuliert das Ausfüllen und Senden eines Formulars auf einer Website. Mit dem Formulardaten-Editor können Sie Schlüssel / Wert-Paare (mithilfe des Schlüsselwert-Editors) für Ihre Daten festlegen. Sie können auch Dateien an einen Schlüssel anhängen. Beachten Sie, dass Dateien aufgrund von Einschränkungen der HTML5-Spezifikation nicht im Verlauf oder in Sammlungen gespeichert werden. Sie müssten die Datei zum Zeitpunkt des Sendens einer Anfrage erneut auswählen.

urlencodiert

Diese Codierung entspricht der in URL-Parametern verwendeten. Sie müssen nur Schlüssel / Wert-Paare eingeben, und Postman codiert die Schlüssel und Werte ordnungsgemäß. Beachten Sie, dass Sie in diesem Codierungsmodus keine Dateien hochladen können. Es kann zu Verwechslungen zwischen Formulardaten und urlencodierten Daten kommen. Überprüfen Sie daher zuerst Ihre API.

roh

Eine Rohanforderung kann alles enthalten. Der Postbote berührt die im Roheditor eingegebene Zeichenfolge nur durch Ersetzen von Umgebungsvariablen. Was auch immer Sie in den Textbereich eingeben, wird mit der Anfrage gesendet. Mit dem Roheditor können Sie den Formatierungstyp zusammen mit dem richtigen Header festlegen, den Sie mit dem Rohkörper senden sollen. Sie können den Content-Type-Header auch manuell festlegen. Normalerweise senden Sie hier XML- oder JSON-Daten.

binär

Mit Binärdaten können Sie Dinge senden, die Sie nicht in Postman eingeben können. Zum Beispiel Bild-, Audio- oder Videodateien. Sie können auch Textdateien senden. Wie bereits im Abschnitt Formulardaten erwähnt, müssten Sie eine Datei erneut anhängen, wenn Sie eine Anforderung über den Verlauf oder die Sammlung laden.

AKTUALISIEREN

Wie von VKK hervorgehoben , ist urlencoded laut WHATWG-Spezifikation der Standardcodierungstyp für Formulare.

Der ungültige Standardwert für diese Attribute ist der Status application / x-www-form-urlencoded. Der fehlende Standardwert für das Attribut enctype ist auch der Status application / x-www-form-urlencoded.

avck
quelle
5
Das Postman-Dokument ist falsch. Die unter html.spec.whatwg.org/multipage/… verfügbare HTML5-Spezifikation von WHATWG definiert eindeutig den Standardwert "application / x-www-form-urlencoded" für das enctype-Attribut des Formularelements. Mit anderen Worten, "application / x-www-form-urlencoded" ist die Standardcodierung (in HTTP-Begriffen Content-Type), die ein Webformular zum Übertragen von Daten verwendet, nicht mehrteilige / Formulardaten. Um eine HTTP-Post-Anfrage bei Formularübermittlung mit einem Inhaltstyp aus mehrteiligen / Formulardaten zu senden, muss dies explizit als Enctype-Wert angegeben werden.
VKK
Was ist also der Unterschied zwischen Formulardaten (die mit Schlüssel-Wert-Paaren in der Postman-Benutzeroberfläche eingegeben wurden), die mit dem Content-Type: application/jsonHeader gesendet wurden ? und Rohdaten als json wie {foo: bar}mit dem gleichen Content-Type: application/jsonHeader eingegeben ?
Inigo
Bei Formulardaten als Schlüsselwertpaaren handelt es sich beim Inhaltstyp um mehrteilige Formulardaten, auch wenn Sie die Überschriften angeben. Bei rohem Inhaltstyp handelt es sich um Text oder was auch immer Sie in den Überschriften angegeben haben.
avck
20

mehrteilige / Formulardaten

Hinweis. Weitere Informationen zu Datei-Uploads, einschließlich Abwärtskompatibilitätsproblemen, der Beziehung zwischen "Mehrteil- / Formulardaten" und anderen Inhaltstypen, Leistungsproblemen usw., finden Sie in RFC2388 .

Informationen zu Sicherheitsproblemen bei Formularen finden Sie im Anhang.

Der Inhaltstyp "application / x-www-form-urlencoded" ist ineffizient, um große Mengen von Binärdaten oder Text mit Nicht-ASCII-Zeichen zu senden. Der Inhaltstyp "Multipart / Formulardaten" sollte zum Senden von Formularen verwendet werden, die Dateien, Nicht-ASCII-Daten und Binärdaten enthalten.

Der Inhaltstyp "Multipart / Formulardaten" folgt den in RFC2045 beschriebenen Regeln aller mehrteiligen MIME-Datenströme . Die Definition von "Multipart / Formulardaten" ist in der [IANA] -Registrierung verfügbar.

Eine "Multipart / Formulardaten" -Nachricht enthält eine Reihe von Teilen, die jeweils eine erfolgreiche Steuerung darstellen. Die Teile werden in derselben Reihenfolge an den Verarbeitungsagenten gesendet, in der die entsprechenden Steuerelemente im Dokumentstrom angezeigt werden. Teilegrenzen sollten in keiner der Daten auftreten. Wie dies geschieht, liegt außerhalb des Geltungsbereichs dieser Spezifikation.

Wie bei allen mehrteiligen MIME-Typen verfügt jeder Teil über einen optionalen "Content-Type" -Header, der standardmäßig "text / plain" ist. Benutzerprogramme sollten den Header "Content-Type" zusammen mit einem Parameter "charset" angeben.

application / x-www-form-urlencoded

Dies ist der Standardinhaltstyp. Mit diesem Inhaltstyp eingereichte Formulare müssen wie folgt codiert werden:

Kontrollnamen und -werte werden maskiert. Leerzeichen werden durch +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ', ein Prozentzeichen und zwei hexadezimale Ziffern ersetzt, die den ASCII-Code des Zeichens darstellen. Zeilenumbrüche werden als "CR LF" -Paare dargestellt (dh %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by= 'und Name / Wert-Paare sind durch "&" voneinander getrennt.

application/x-www-form-urlencodedDer Hauptteil der an den Server gesendeten HTTP-Nachricht besteht im Wesentlichen aus einer riesigen Abfragezeichenfolge. Name / Wert-Paare werden durch das kaufmännische Und (&) und Namen durch das Gleichheitszeichen (=) von den Werten getrennt. Ein Beispiel hierfür wäre:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

Der Inhaltstyp "application / x-www-form-urlencoded" ist ineffizient, um große Mengen von Binärdaten oder Text mit Nicht-ASCII-Zeichen zu senden. Der Inhaltstyp "Multipart / Formulardaten" sollte zum Senden von Formularen verwendet werden, die Dateien, Nicht-ASCII-Daten und Binärdaten enthalten.

Mohideen bin Mohammed
quelle
15

Hier sind einige ergänzende Beispiele, um den Rohtext zu sehen, den Postman in der Anfrage übergibt. Sie können dies sehen, indem Sie die Postman-Konsole öffnen:

Geben Sie hier die Bildbeschreibung ein

Formulardaten

Header

content-type: multipart/form-data; boundary=--------------------------590299136414163472038474

Körper

key1=value1key2=value2

x-www-form-urlencoded

Header

Content-Type: application/x-www-form-urlencoded

Körper

key1=value1&key2=value2

Rohtext / Klartext

Header

Content-Type: text/plain

Körper

This is some text.

Roher Json

Header

Content-Type: application/json

Körper

{"key1":"value1","key2":"value2"}
Suragch
quelle