Die im HTTP/1.1 -Protokoll angegebene HTTP -Anforderungsmethode ist Optionen, Get, Head, Post, Put, Löschen, Verfolgung, Verbindung. Unter ihnen wird der Beitrag in der Regel verwendet, um Daten an den Server zu senden.
Wir wissen, dass das HTTP -Protokoll vom ASCII -Code und die auf dem TCP/IP -Protokoll basierenden Antragsschichtspezifikationen übertragen wird. Die Spezifikationen teilen HTTP -Anforderungen in drei Teile: Statuslinie, Anforderungskopf und Nachricht. Ähnlich wie folgt:
<emod> <pepkest-URL> <Vision> <header> <entity-Body> </Entity-Body> </header> </Version> </request-url> </methode> </methode> </methode > </Method>
Die Vereinbarung sieht vor, dass die von der Post eingereichten Daten in den Entitätskörper aufgenommen werden müssen, aber die Vereinbarung gibt nicht an, welche Daten verwendet werden müssen. In der Tat können Entwickler das Format des Botschaftsthemas selbst bestimmen.
Wenn die Daten jedoch gesendet werden, ist es sinnvoll, auf dem Server erfolgreich zu sein. Die allgemeine Serversprache wie Java und ihr Framework haben -in Funktionen der automatischen Analyse gemeinsamer Datenformate erstellt. Der Server wird normalerweise aus dem Feld "Inhaltstyp" im Anforderungskopf gelernt, um zu erfahren, wie das Betreff der Nachricht in der Anforderung in der Anforderung codiert ist, und dann das Thema analysiert. Wenn es also um Post-Sureinited-Datenschemata geht, enthält es zwei Teile: Inhalts- und Nachrichten-Subjektcodierung. Hier sind die offizielle Einführung in sie.
Anwendung/x-www-form-urlencodedDies sollte die häufigste Möglichkeit sein, Daten einzureichen. Wenn die nativen Formulare des Browsers, wenn das EngeTePe-Attribut nicht festgelegt ist, werden die Daten per Anwendung/X-WWW-Form-Urscoded übermittelt. Die Anfrage ähnelt dem folgenden (der irrelevante Anfrage -Header wird in diesem Artikel weggelassen):
Beitrag http://www.example.com 5b%5d = 3
Zunächst wird der Inhaltstyp als Anwendung/x-www-form-rencoded angegeben. Die meisten Serversprachen unterstützen diese Methode gut. In PHP kann Post ['Titel'] beispielsweise den Wert des Titels erhalten.
Wenn wir Daten mit AJAX einreichen, verwenden wir oft diese Methode. Beispielsweise lautet der Standardwert von JQuery AJAX, der inhaltliche Typ, "Anwendung/x-www-form-urlencoded; charset = utf-8".
Mehrpartikel/FormdatenDies ist eine weitere häufige Möglichkeit, Daten zu veröffentlichen. Wenn wir Dateien mit Formularen hochladen, müssen wir dem Formular gleich diesem Wert geschlossen werden. Kommen Sie direkt zu einem Anforderungsbeispiel:
Post http://www.example.com http/1.1Content-Typ: Multipart/Form-Data; --- webkitformBoundaryRGKCBY7QHFD3TRWACONTENT-Disposition: Form-Data;
Dieses Beispiel ist etwas kompliziert. Zunächst wird eine Grenze verwendet, um verschiedene Felder zu teilen. Dann zeigt der Inhaltstyp an, dass die Daten von Mutipart/Form-Data codiert werden, was diesmal der Grenze angefordert wird. Das Message -Betreff ist in ähnliche Teile mit einer ähnlichen Struktur gemäß der Anzahl der Abschnitte aufgeteilt. ). Wenn die Datei übertragen wird, enthält sie auch Informationen zum Dateinamen und Dateitypen. Das Betreff der Nachricht endete schließlich mit --- boundary-. Ausführliche Definitionen von Mutipart/Form-Data finden Sie unter RFC1867, um anzuzeigen.
Diese Methode wird im Allgemeinen zum Hochladen von Dateien verwendet, und die Hauptserversprache unterstützt auch eine gute Unterstützung dafür.
Die beiden oben genannten Postdatenmethoden sind native Unterstützung für Browser, und die nativen Formulare unterstützen diese beiden Methoden in diesem Stadium nur. Da immer mehr Websites, insbesondere WebApp, AJAX für die Dateninteraktion verwenden, können wir jedoch neue Methoden zur Einreichung von Daten definieren, um mehr Komfort für die Entwicklung zu erzielen.
Anwendung/JSONApplication/JSON, der Inhaltstyp, ist mit dem Antwortheader definitiv nicht unbekannt. Tatsächlich verwenden es immer mehr Menschen als Anforderungskopf, um der Servermeldung mitzuteilen, dass es sich bei der Hauptkörper um eine serialisierte JSON -Zeichenfolge handelt. Aufgrund der Popularität von JSON -Spezifikationen sind die wichtigsten Browser mit Ausnahme der niedrigen Version, dh in JSON.Stringify heimisch, und die Serversprache hat auch eine Funktion, mit JSON umzugehen, und JSON wird keine Probleme haben.
Das JSON -Format unterstützt kompliziertere strukturierte Daten als Schlüsselwerte, was ebenfalls nützlich ist. Ich erinnere mich, als ich vor einigen Jahren ein Projekt machte, war die Datenebene, die ich eingereicht werden musste, sehr tief. Zu diesem Zeitpunkt habe ich die JSON-Zeichenfolge jedoch als Wert verwendet, und ich wurde immer noch in das wichtige Wertpaar eingelegt und sie in X-Www-Form-Urlengen eingereicht.
Die AJAX -Funktion in AngularJs von Google besteht darin, die JSON -Zeichenfolge standardmäßig einzureichen. Zum Beispiel der folgende Code:
var data = {'title': 'test', 'sub': [1,2,3]};
Die endgültige Anfrage lautet:
Post http://www.example.com http/1.1Content-Type: application/json;
Dieses Schema kann problemlos komplexe strukturierte Daten einreichen, insbesondere für eine erholsame Schnittstelle. Große Verpackungswerkzeuge wie Chrome's eigene Entwicklerwerkzeuge, Firebug und Fiddler zeigen JSON -Daten mit einer sehr freundlichen Baumstruktur an. Es gibt jedoch auch einige Serversprachen, die diese Methode nicht unterstützt haben. Zu diesem Zeitpunkt müssen Sie es selbst verarbeiten: Wenn der Inhalts-Typ im Anforderungsheader Anwendung/JSON ist, erhalten Sie den ursprünglichen Eingabestream von PHP: // Eingabe und dann JSON_DECODE. Einige Java -Frameworks haben begonnen.
Natürlich können AngularJs auch so konfiguriert werden, dass Daten mit X-WWW-Form-Urlenkodiert werden.
Text/xmlXML-RPC (XML Remote-Prozeduranruf). Es handelt sich um eine Remote -Anrufspezifikation, die HTTP als Übertragungsprotokoll und XML als Codierungsmethode verwendet. Die typische XML-RPC-Anforderung lautet: Post http://www.example.com http/1.1Content-Type: text/xml <!-? /MethodName> <params> <param> <wert> <i4> 41 </i4> </value> </params> </methodcall>
Das XML-RPC-Protokoll ist einfach und voller Funktionen, und die Implementierung verschiedener Sprachen ist verfügbar. Es wird auch weit verbreitet, wie die XML-RPC-API von WordPress, den Ping-Service der Suchmaschine usw. In JavaScript gibt es auch eine fertige Bibliothek, die die Dateninteraktion auf diese Weise unterstützt, die vorhandene XML-RPC-Dienste durchaus unterstützen kann. Ich persönlich denke jedoch, dass die XML -Struktur immer noch zu aufgebläht ist.