La méthode de demande HTTP spécifiée dans le protocole HTTP / 1.1 est des options, Get, Head, Post, Put, Delete, Trace, Connect. Parmi eux, la publication est généralement utilisée pour soumettre des données au serveur.
Nous savons que le protocole HTTP est transmis par code ASCII et les spécifications de la couche d'application basées sur le protocole TCP / IP. Les spécifications divisent les demandes HTTP en trois parties: ligne d'état, tête de demande et sujet de message. Semblable à ce qui suit:
<emod> <cands-repkest-Url> <Vision> <Abougle> <tity-body> </ entity-body> </ en-têtes> </ version> </ request-url> </ méthode> </ méthode> </ méthode > </ Méthode>
L'accord stipule que les données soumises par le Post doivent être placées dans l'entité-corps, mais l'accord ne spécifie pas les données doit être utilisée. En fait, les développeurs peuvent déterminer eux-mêmes le format du message du message.
Cependant, si les données sont envoyées, il est significatif de réussir dans le serveur. Le langage du serveur général tel que Java et leur framework ont construit les fonctions de l'analyse automatique des formats de données communs. Le serveur est généralement appris du champ de type contenu dans la tête de demande pour savoir comment le sujet du message dans la demande est codé dans la demande, puis analyse le sujet. Ainsi, en ce qui concerne les schémas de données publiés par publication, il contient deux parties: codage de type contenu et sujet de message. Voici l'introduction officielle à eux.
Application / x-www-forme-urlencodCela devrait être le moyen le plus courant de soumettre des données. Si le formulaire natif forme du navigateur, si l'attribut ENCTYPE n'est pas défini, les données seront soumises par application / x-www-form-urlencod. La demande est similaire à ce qui suit (l'en-tête de demande non pertinent est omis dans cet article):
Poster http://www.example.com http / 1.1content-type: application / x-www-forlem-urlencoded; 5b% 5d = 3
Tout d'abord, le type de contenu est spécifié en tant qu'application / x-www-form-urlencoced; La plupart des langages du serveur ont une bonne prise en charge de cette méthode. Par exemple, dans PHP, le post [′ titre ′] peut obtenir la valeur du titre.
Plusieurs fois, lorsque nous soumettons des données avec AJAX, nous utilisons également cette méthode. Par exemple, la valeur par défaut de JQuery de JQuery, le type de contenu est "Application / x-www-form-urlencoded; charset = utf-8".
Multipar / format de formeC'est une autre façon courante de publier des données. Lorsque nous téléchargeons des fichiers avec des formulaires, nous devons rendre le formulaire encasté égal à cette valeur. Venez directement à un exemple de demande:
Post http://www.example.com http / 1.1Content-Type: Multipart / Form-data; --- webkitformBoundaryrgkcby7qhfd3trwacontent-Disposition: form-data;
Cet exemple est légèrement compliqué. Tout d'abord, une frontière est utilisée pour diviser différents champs. Ensuite, le type de contenu indique que les données sont codées par mutipart / format de forme, quelle est la limite demandée cette fois. Le sujet du message est divisé en parties similaires avec une structure similaire en fonction du nombre de sections. ). Si le fichier est transmis, il contient également des informations de nom de fichier et de type de fichier. Le sujet du message s'est finalement terminé avec - benaire-. Pour des définitions détaillées de MuTIPART / Form-Data, veuillez vous rendre à RFC1867 pour afficher.
Cette méthode est généralement utilisée pour télécharger des fichiers, et le principal langage du serveur a également une bonne prise en charge.
Les deux méthodes post-données mentionnées ci-dessus sont la prise en charge native des navigateurs, et les formulaires de forme native ne prennent en charge que ces deux méthodes à ce stade. Cependant, comme de plus en plus de sites Web, en particulier WebApp, tous utilisent AJAX pour l'interaction des données, nous pouvons complètement définir de nouvelles méthodes de soumission de données pour apporter plus de commodité au développement.
Application / JSONApplication / JSON, le type de contenu, n'est certainement pas inconnu avec l'en-tête de réponse. En fait, de plus en plus de personnes l'utilisent maintenant comme chef de demande pour dire au message du serveur que le corps principal est une chaîne JSON sérialisée. En raison de la popularité des spécifications JSON, les principaux navigateurs, à l'exception de la basse version, IE sont originaires de JSON.Stringify, et le langage du serveur a également une fonction pour traiter JSON, et JSON ne rencontrera aucun problème.
Le format JSON prend en charge des données structurées plus compliquées que les valeurs clés, ce qui est également utile. Je me souviens que lorsque j'ai fait un projet il y a quelques années, le niveau de données dont je devais être soumis était très profond. Cependant, à l'époque, j'ai utilisé la chaîne JSON comme valeur, et j'ai toujours été placée dans la paire de valeurs clés, et je l'ai soumise dans X-Www-Form-Urlencoded.
La fonction AJAX dans AngularJS de Google est de soumettre la chaîne JSON par défaut. Par exemple, le code suivant:
var data = {'title': 'test', 'sub': [1,2,3]}; $ http.post (URL, data) .success (fonction (résultat) {...});
La demande finale est:
Poster http://www.example.com http / 1.1Content-Type: Application / JSON;
Ce schéma peut facilement soumettre des données structurées complexes, en particulier adaptées à l'interface Restful. Les principaux outils d'emballage tels que les propres outils de développeur de Chrome, Firebug et Fiddler afficheront les données JSON avec une structure d'arbres, qui est très sympathique. Cependant, il existe également des langages de serveur qui n'ont pas pris en charge cette méthode. Pour le moment, vous devez le gérer par vous-même: lorsque le type de contenu est Application / JSON dans l'en-tête de demande, obtenez le flux d'entrée d'origine à partir de l'entrée PHP: //, puis JSON_DECODE. Certains cadres Java ont commencé à faire.
Bien sûr, AngularJS peut également être configuré pour soumettre des données avec X-WW-Form-Urlencoded.
Texte / xmlXML-RPC (appel de procédure à distance XML). Il s'agit d'une spécification d'appel à distance utilisant HTTP comme protocole de transmission et XML comme méthode de codage. La demande typique de XML-RPC est la suivante: post http://www.example.com http / 1.1Content-Type: Text / XML <! -? / MethodName> <Ar params> <amarm> <value> <i4> 41 </i4> </value> </onsams> </thododandise>
Le protocole XML-RPC est simple et plein de fonctions, et la mise en œuvre de diverses langues est disponible. Il est également largement utilisé, comme l'API XML-RPC de WordPress, le service de ping du moteur de recherche, etc. Dans JavaScript, il existe également une bibliothèque prête à l'emploi pour prendre en charge l'interaction des données de cette manière, qui peut bien prendre en charge les services XML-RPC existants. Cependant, je pense personnellement que la structure XML est encore trop gonflée.