Ok, ich kenne den Unterschied im Zweck. GET ist dazu da, um Daten abzurufen. Eine Anfrage stellen und Daten erhalten. POST sollte für CRUD-Operationen verwendet werden, die nicht das Lesen betreffen, glaube ich. Aber letztendlich, kümmert es den Server wirklich, ob er am Ende ein GET gegen ein POST erhält?
Antworten
Zu viele Anzeigen?Technisch gesehen, nein. Alles, was GET tut, ist, die Dinge in der ersten Zeile der HTTP-Anforderung zu veröffentlichen, und POST veröffentlicht Dinge im Body.
Wie auch immer, wie die "Web-Infrastruktur" die Unterschiede behandelt, macht einen großen Unterschied. Wir könnten ein ganzes Buch darüber schreiben. Aber ich werde Ihnen einige "Best Practices" geben:
Verwenden Sie "POST", wenn Ihre HTTP-Anforderung etwas "Konkretes" im Webserver ändern würde. Zum Beispiel, wenn Sie eine Seite bearbeiten, einen neuen Datensatz erstellen usw. POSTs werden weniger wahrscheinlich zwischengespeichert oder als etwas behandelt, das "wiederholbar ohne Nebenwirkungen" ist.
Verwenden Sie "GET", wenn Sie ein Objekt "betrachten möchten". Eine solche Betrachtung könnte jedoch etwas "hinter den Kulissen" in Bezug auf Zwischenspeicherung oder Aufzeichnung ändern, sollte aber nichts "Wesentliches" ändern. Ich könnte mein GET wiederholen, und es würde nichts Schlimmes passieren, außer aufgeblähten Zugriffen. GETs sollten leicht als Lesezeichen gespeichert werden können, damit ein Benutzer später zu diesemselben Objekt zurückkehren kann.
Die Parameter des GET (die Dinge nach dem ?, traditionell) sollten als "Attribute zur Ansicht" oder "was zu sehen" und so weiter betrachtet werden. Noch einmal, es sollte tatsächlich nichts ändern: Verwenden Sie dafür POST.
Und ein letztes Wort, wenn Sie etwas POSTen (zum Beispiel einen neuen Kommentar erstellen), sollte die Verarbeitung des Posts ein 302 ausgeben, um den Benutzer zu einer neuen URL umzuleiten, die dieses Objekt anzeigt. Zum Beispiel bearbeitet ein POST die Informationen und leitet dann den Browser zu einer GET-Anweisung um, um den neuen Status anzuzeigen. Die Anzeige von Informationen als Ergebnis eines POSTs kann auch Probleme verursachen. Die Weiterleitung wird häufig verwendet und sorgt für reibungslosere Abläufe.
Soll der Benutzer die Möglichkeit haben, die resultierende Seite als Lesezeichen zu speichern? Etwas anderes, worüber man nachdenken sollte, ist, dass einige Browser/Server die Länge der GET-URI fälschlicherweise begrenzen.
Bearbeiten: korrigierte Anmerkung zur Zeichenlängenbeschränkung - danke ars!
Ja, das ist wichtig. GET und POST sind wirklich ziemlich unterschiedlich.
Sie haben recht, normalerweise dient GET dazu, Daten vom Server abzurufen und eine Seite anzuzeigen, während POST dazu dient, Daten zurück an den Server zu senden. Intern bekommen Ihre Skripte die gleichen Daten, egal ob es sich um GET oder POST handelt, also nein, der Server kümmert sich nicht darum.
Der Hauptunterschied besteht darin, dass GET-Parameter in URLs angegeben sind, während POST nicht. Deshalb wird POST für Anmelde- und Login-Formulare verwendet - Sie möchten Ihr Passwort nicht in einer URL haben. Ebenso, wenn Sie verschiedene Seiten ansehen oder eine spezifische Ansicht einiger Daten anzeigen, möchten Sie normalerweise eine eindeutige URL haben.