16 Stimmen

GET vs. POST spielt es wirklich eine große Rolle?

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?

1voto

Ch'marr Punkte 1224

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.

1voto

jbruce2112 Punkte 21

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!

0voto

Andriy Volkov Punkte 18140

Da GET für die Spezifizierung der Ressource gedacht ist, die du abrufen möchtest, kann je nach genauer Software auf der Serverseite der Webserver (oder der Lastenausgleicher davor) eine Größenbeschränkung für GET-Anfragen haben, um Denial-Of-Service-Angriffe zu verhindern...

0voto

Cleriston Punkte 684

Es spielt wirklich eine Rolle. Ich habe etwa 11 Dinge gesammelt, die Sie über sie wissen sollten.

11 Dinge, die Sie über GET vs POST wissen sollten

0voto

DisgruntledGoat Punkte 66021

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X