253 votes

Quelles sont les différences entre application/json et 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" ;

278voto

Icarus Points 36951

Dans le premier cas, il s'agit d'indiquer au serveur web que vous publiez des données JSON comme dans :

{"Name": "John Smith", "Age": 23}

Dans le second cas, il s'agit d'indiquer au serveur web que vous allez coder les paramètres dans l'URL :

Name=John+Smith&Age=23

30 votes

Quelles implications cela a-t-il du côté du serveur ? Je vois des sites comme stackoverflow & Twitter utiliser x-www-form-urlencoded pour les requêtes AJAX comme le vote, etc. La réponse renvoyée est JSON . Je pense qu'il est préférable d'avoir une paire demande/réponse symétrique, c'est-à-dire les deux en JSON.

0 votes

@buffer Je suis également curieux de connaître la réponse à votre question symétrique.

2 votes

@AdamJohns : Ce blog vaut la peine d'être lu bien qu'il ne réponde pas exactement au "pourquoi" : homakov.blogspot.in/2012/06/

38voto

fgul Points 86

webRequest.ContentType = "application/x-www-form-urlencoded" ;

  1. Où se trouve application/x-www-form-urlencoded D'où vient le nom de l'entreprise ?

    Si vous envoyez HTTP GET vous pouvez utiliser les paramètres de requête comme suit :

    http://example.com/path/to/page ?name=ferret&color=purple

    Le contenu des champs est codé sous la forme d'une chaîne de requête. Le site application/x-www-form- urlencoded Le nom de la requête provient du paramètre de requête de l'url précédent, mais le paramètre de requête est 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, qui contient les éléments suivants nom- valeur paires séparées par & caractère

    par exemple, champ1=valeur1&champ2=valeur2

  2. Il peut être simple demande appelé simple - ne déclenchent pas de vérification avant le vol

    Une demande simple doit avoir certaines propriétés. Vous pouvez regarder ici pour plus d'informations. L'une d'entre elles est qu'il n'y a que trois valeurs autorisées pour l'en-tête Content-Type dans le cas de simples simples

    • application/x-www-form-urlencoded
    • multipart/form-data
    • texte/plain

Pour les arbres de paramètres plats, l'application/x-www-form-urlencoded a fait ses preuves.

request.ContentType = "application/json ; charset=utf-8" ;

  1. Les données seront json format.

axios et superagent deux des bibliothèques HTTP les plus populaires de npm, fonctionnent par défaut avec des corps JSON.

{
  "id": 1,
  "name": "Foo",
  "price": 123,
  "tags": [
    "Bar",
    "Eek"
  ],
  "stock": {
    "warehouse": 300,
    "retail": 20
  }
}
  1. "application/json" Content-Type est l'un des éléments suivants Demandes prévisualisées .

Maintenant, si la demande n'est pas simple demande le navigateur envoie automatiquement une requête HTTP avant la requête originale en OPTIONS pour vérifier s'il est possible d'envoyer la demande originale en toute sécurité. Si c'est le cas, envoyez alors la demande réelle. Vous pouvez regarder ici pour plus d'informations.

  1. application/json est adapté aux débutants. Les tableaux codés en URL peuvent être un cauchemar !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X