Quelle est la différence entre
request.ContentType = "application / json; charset = utf-8";
et
webRequest.ContentType = "application / x-www-form-urlencoded";
Quelle est la différence entre
request.ContentType = "application / json; charset = utf-8";
et
webRequest.ContentType = "application / x-www-form-urlencoded";
Réponses:
Le premier cas indique au serveur Web que vous publiez des données JSON comme dans:
{ Name : 'John Smith', Age: 23}
La deuxième option indique au serveur Web que vous encoderez les paramètres dans l'URL comme dans:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
confondrait le serveur (Elixir utilisant Poison dans mon cas) et entraînerait une analyse inappropriée de l'objet (il convertissait en quelque sorte le tableau imbriqué d'objets sur une carte, au lieu d'une liste). L'utilisation application/json
devrait être le bon choix dans ce cas.
webRequest.ContentType = "application / x-www-form-urlencoded";
D'où vient le nom de application / x-www-form-urlencoded ?
Si vous envoyez une requête HTTP GET , vous pouvez utiliser les paramètres de requête comme suit:
http://example.com/path/to/page
? name = furet & color = violet
Le contenu des champs est codé sous forme de chaîne de requête. Le application/x-www-form-
urlencoded
nom du fichier provient du paramètre de requête url précédent, mais les paramètres de requête se trouvent dans le corps de la requête au lieu de l'url.
L'ensemble des données du formulaire est envoyé sous la forme d'une longue chaîne de requête. La chaîne de requête contient des paires nom-valeur séparées par un caractère &
par exemple, champ1 = valeur1 & champ2 = valeur2
Il peut s'agir d'une simple requête appelée simple - ne déclenchez pas de contrôle avant le vol
Une requête simple doit avoir certaines propriétés. Vous pouvez regarder ici pour plus d'informations. L'un d'eux est qu'il n'y a que trois valeurs autorisées pour l'en-tête Content-Type pour les demandes simples
3.Pour la plupart des arbres de paramètres plats, application / x-www-form-urlencoded a fait ses preuves.
request.ContentType = "application / json; charset = utf-8";
axios et superagent , deux des bibliothèques HTTP npm les plus populaires, fonctionnent avec les corps JSON par défaut.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Maintenant, si la requête n'est pas une simple requête , le navigateur envoie automatiquement une requête HTTP avant la requête d'origine par la méthode OPTIONS pour vérifier s'il est sûr d'envoyer la requête d'origine. Si c'est ok, envoyez la demande réelle. Vous pouvez regarder ici pour plus d'informations.
x-www-form-urlencoded
pour les demandes AJAX comme vote, etc. La réponse renvoyée estJSON
. Je pense qu'il vaut mieux avoir une paire demande / réponse symétrique, c'est-à-dire à la fois JSON.