Ich habe mich erst kürzlich mit PHP/AJAX/jQuery befasst und es scheint mir, dass ein wichtiger Teil dieser Technologien das von POST
und GET
ist.
Was ist der Unterschied zwischen POST
und GET
? Durch Experimentieren weiß ich, dass GET
die zurückgegebenen Variablen und ihre Werte an die URL-Zeichenfolge anfügt
website.com/directory/index.php?name=YourName&bday=YourBday
aber POST
nicht.
Ist dies der einzige Unterschied oder gibt es spezielle Regeln oder Konventionen für die Verwendung des einen oder anderen?
Zweitens habe ich auch POST
und GET
außerhalb von PHP gesehen: auch in AJAX und jQuery. Wie unterscheiden sich POST
und GET
zwischen diesen 3? Sind sie die gleiche Idee, die gleiche Funktionalität, nur unterschiedlich genutzt?
Ein POST
enthält im Gegensatz zu einem GET
normalerweise relevante Informationen im Hauptteil der Anforderung. (Ein GET
sollte keinen Body haben. Abgesehen von Cookies ist der einzige Ort, an dem Informationen weitergegeben werden, die URL.) Abgesehen davon, dass die URL relativ sauber bleibt, können Sie mit POST
auch viel mehr Informationen senden (da die URLs eine begrenzte Länge haben, z praktisch) und ermöglicht das Senden nahezu aller Arten von Daten (Datei-Upload-Formulare können beispielsweise nicht GET
verwenden - sie müssen POST
plus einen speziellen Inhaltstyp/eine spezielle Codierung verwenden).
Abgesehen davon bedeutet ein POST
, dass die Anforderung etwas ändert und nicht ohne Weiteres wiederholt werden sollte. Aus diesem Grund werden Sie manchmal von Ihrem Browser gefragt, ob Sie die Formulardaten erneut senden möchten, wenn Sie auf die Schaltfläche "Zurück" klicken.
GET
sollte auf der anderen Seite idempotent sein, was bedeutet, dass Sie es eine Million Mal tun können und der Server jedes Mal dasselbe tun wird (und im Grunde dasselbe Ergebnis zeigt).
Obwohl die Unterschiede nicht beschrieben werden, sollten Sie im Folgenden ein paar Dinge bedenken, wenn Sie die richtige Methode auswählen.
POST und GET sind zwei HTTP-Anforderungsmethoden . GET ist normalerweise dazu gedacht, einige Daten abzurufen, und es wird erwartet, dass es idempotent ist (das Wiederholen der Abfrage hat keine Nebenwirkungen) und nur begrenzte Mengen von Parameterdaten an den Server senden kann. GET-Anforderungen werden von einigen Browsern häufig standardmäßig zwischengespeichert, wenn Sie nicht vorsichtig sind.
Der POST dient zum Ändern des Serverstatus. Es enthält mehr Daten, und das Wiederholen der Abfrage kann (und wird häufig erwartet) Nebenwirkungen haben, z. B. das Erstellen von zwei Nachrichten anstelle von einer.
Wenn Sie arbeiten RESTfully , sollte GET für Anfragen verwendet werden, bei denen Sie nur Daten erhalten, und POST sollte für Anfragen verwendet werden, bei denen Sie etwas bewirken.
Einige Beispiele:
Rufen Sie die Seite mit einer bestimmten SO Frage auf
Einen Kommentar posten
Senden Sie eine POST Anfrage, indem Sie auf die Schaltfläche "In den Warenkorb" klicken.
Mit POST können Sie auch mehrteilige MIME-Codierungen durchführen, dh, Sie können auch Dateien anhängen. Wenn Sie Post-Variablen für die Seitennavigation verwenden, wird der Benutzer in einer Warnung gefragt, ob er den Post-Parameter erneut senden möchte. Normalerweise sehen sie in einer HTTP-Anfrage gleich aus, aber Sie sollten einfach bei POST bleiben, wenn Sie etwas an einen Server "POST" müssen, und "GET", wenn Sie etwas von einem Server abrufen müssen, da dies der Fall ist wie sie beabsichtigt waren.
Der einzige "große" Unterschied zwischen POST & GET (bei Verwendung mit AJAX) besteht darin, dass GET als URL bereitgestellt wird und ihre Länge begrenzt ist (da die URL nicht unendlich lang ist).