web-dev-qa-db-fra.com

Quelle est la différence entre form-data, x-www-form-urlencoded et raw dans l'application Postman Chrome?

J'utilise l'extension Postman Chrome pour tester un service Web. Trois options sont disponibles pour la saisie de données. Je suppose que le brut est pour l'envoi de JSON. Quelle est la différence entre les deux autres, form-data et x-www-form-urlencoded?

174
Rohan

Ce sont différents types de contenu de formulaire définis par le W3C. Si vous souhaitez envoyer un texte simple/ASCII, alors x-www-form-urlencoded fonctionnera. C'est la valeur par défaut.

Mais si vous devez envoyer du texte non-ASCII ou des données binaires volumineuses, les données de formulaire sont destinées à cela.

Vous pouvez utiliser Raw si vous souhaitez envoyer du texte brut, du JSON ou tout autre type de chaîne. Comme son nom l'indique, Postman envoie les données de chaîne brutes telles quelles sans modifications. Le type de données que vous envoyez peut être défini à l'aide de l'en-tête content-type du menu déroulant.

Binary peut être utilisé lorsque vous souhaitez attacher des données non textuelles à la demande, par exemple. un fichier vidéo/audio, des images ou tout autre fichier de données binaire.

Reportez-vous à ce lien pour en savoir plus: Formulaires dans des documents HTML

197
Basant Singh

Ceci explique mieux: Docs Postman

Corps de la demande

Lors de la construction des requêtes, vous utiliseriez beaucoup l'éditeur de corps de requête. Postman vous permet d'envoyer pratiquement n'importe quel type de requête HTTP (si vous ne pouvez pas envoyer quelque chose, faites-le nous savoir!). L'éditeur de corps est divisé en 4 zones et dispose de contrôles différents en fonction du type de corps.

données de formulaire

multipart/form-data est l'encodage par défaut qu'un formulaire Web utilise pour transférer des données. Cela simule de remplir un formulaire sur un site Web et de le soumettre. L'éditeur de données de formulaire vous permet de définir des paires clé/valeur (à l'aide de l'éditeur clé-valeur) pour vos données. Vous pouvez également joindre des fichiers à une clé. Notez qu'en raison des restrictions de la spécification HTML5, les fichiers ne sont pas stockés dans l'historique ni dans les collections. Vous devrez sélectionner le fichier à nouveau au moment de l'envoi d'une demande.

codé en url

Ce codage est le même que celui utilisé dans les paramètres d'URL. Il vous suffit d'entrer des paires clé/valeur et Postman encodera correctement les clés et les valeurs. Notez que vous ne pouvez pas télécharger de fichiers via ce mode de codage. Il pourrait y avoir une certaine confusion entre les données de formulaire et le code url, alors vérifiez d’abord avec votre API.

brut

Une demande brute peut contenir n'importe quoi. Postman ne touche pas la chaîne entrée dans l'éditeur brut, à l'exception du remplacement des variables d'environnement. Tout ce que vous mettez dans la zone de texte est envoyé avec la demande. L'éditeur brut vous permet de définir le type de formatage ainsi que l'en-tête correct que vous devez envoyer avec le corps brut. Vous pouvez également définir l'en-tête Content-Type manuellement. Normalement, vous enverriez ici des données XML ou JSON.

binaire

les données binaires vous permettent d’envoyer des éléments que vous ne pouvez pas saisir dans Postman. Par exemple, des fichiers image, audio ou vidéo. Vous pouvez également envoyer des fichiers texte. Comme indiqué précédemment dans la section relative aux données de formulaire, vous devez rattacher un fichier si vous chargez une demande dans l'historique ou la collection.

UPDATE

Comme indiqué par VKK , le WHATWG spec dire urlencoded est le type de codage par défaut pour les formulaires.

La valeur par défaut non valide pour ces attributs est l'état application/x-www-form-urlencoded. La valeur par défaut manquante pour l'attribut enctype est également l'état application/x-www-form-urlencoded.

81
avck

multipart/form-data

Remarque. Veuillez consulter la RFC2388 pour plus d'informations sur les téléchargements de fichiers, y compris les problèmes de compatibilité, la relation entre "multipart/form-data" et d'autres types de contenu, les problèmes de performances, etc.

Veuillez consulter l'annexe pour plus d'informations sur les problèmes de sécurité pour les formulaires.

Le type de contenu "application/x-www-form-urlencoded" est inefficace pour l'envoi de grandes quantités de données binaires ou de texte contenant des caractères non-ASCII. Le type de contenu "multipart/form-data" doit être utilisé pour soumettre des formulaires contenant des fichiers, des données non-ASCII et des données binaires.

Le type de contenu "multipart/form-data" suit les règles de tous les flux de données MIME en plusieurs parties, comme indiqué dans la section RFC2045 . La définition de "multipart/form-data" est disponible dans le registre [IANA].

Un message "multipart/form-data" contient une série de parties, chacune représentant un contrôle réussi. Les pièces sont envoyées à l'agent de traitement dans le même ordre, les contrôles correspondants apparaissent dans le flux de documents. Les limites des parties ne doivent apparaître dans aucune des données; la façon dont cela est fait est en dehors du domaine d'application de cette spécification.

Comme avec tous les types MIME en plusieurs parties, chaque partie a un en-tête facultatif "Content-Type" qui est par défaut "text/plain". Les agents utilisateurs doivent fournir l'en-tête "Content-Type", accompagné d'un paramètre "charset".

application/x-www-form-urlencoded

C'est le type de contenu par défaut. Les formulaires soumis avec ce type de contenu doivent être codés comme suit:

Les noms de contrôle et les valeurs sont échappés. Les caractères d'espacement sont remplacés par +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by% HH ', un signe de pourcentage et deux chiffres hexadécimaux représentant le code ASCII du caractère. Les sauts de ligne sont représentés par des paires "CR LF" (c.-à-d., %0D%0A'). The control names/values are listed in the order they appear in the document. The name is separated from the value by = 'et les paires nom/valeur sont séparées l'une de l'autre par "&".

application/x-www-form-urlencoded le corps du message HTTP envoyé au serveur est essentiellement constitué d'une chaîne de requête géante - les paires nom/valeur sont séparées par l'esperluette (&) et les noms sont séparés des valeurs par le symbole égal à (=). Un exemple de ceci serait:

MyVariableOne=ValueOne&MyVariableTwo=ValueTwo

Le type de contenu "application/x-www-form-urlencoded" est inefficace pour l'envoi de grandes quantités de données binaires ou de texte contenant des caractères non-ASCII. Le type de contenu "multipart/form-data" doit être utilisé pour soumettre des formulaires contenant des fichiers, des données non-ASCII et des données binaires.

19

Voici quelques exemples supplémentaires pour voir le texte brut que Postman passe dans la requête. Vous pouvez le voir en ouvrant la console Postman:

enter image description here

données de formulaire

Entête

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

Corps

key1=value1key2=value2

x-www-form-urlencoded

Entête

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

Corps

key1=value1&key2=value2

Texte brut/plaine

Entête

Content-Type: text/plain

Corps

This is some text.

Raw Json

Entête

Content-Type: application/json

Corps

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