409 Stimmen

Wann verwenden Sie POST und wann GET?

Soweit ich das beurteilen kann, gibt es drei Kategorien:

  1. Verwenden Sie niemals GET und verwenden POST
  2. Verwenden Sie niemals POST und verwenden GET
  3. Es spielt keine Rolle, welche Sie verwenden.

Liege ich mit der Annahme dieser drei Fälle richtig? Wenn ja, was sind einige Beispiele für jeden Fall?

6voto

davenpcj Punkte 12248

Da es sich bei GETs um reine URLs handelt, können sie vom Webbrowser zwischengespeichert werden und eignen sich besser für Dinge wie konsistent generierte Bilder. (Legen Sie eine Verfallszeit fest)

Ein Beispiel von der Gravatar-Seite: http://www.gravatar.com/avatar/4c3be63a4c2f539b013787725dfce802?d=monsterid

GET kann eine geringfügig bessere Leistung erbringen, da einige Webserver POST-Inhalte in eine temporäre Datei schreiben, bevor sie den Handler aufrufen.

Ein weiterer wichtiger Punkt ist die Größenbeschränkung. GETs sind durch die Größe der URL begrenzt, standardmäßig 1024 Bytes, obwohl die Browser mehr unterstützen können.

Für die Übertragung von mehr Daten sollte ein POST verwendet werden, um eine bessere Browserkompatibilität zu erreichen.

Selbst eine Unterschreitung dieser Grenze ist problematisch, da, wie ein anderer Poster schrieb, alles in der URL in anderen Teilen der Benutzeroberfläche des Browsers, z. B. im Verlauf, landen könnte.

4voto

kemiller2002 Punkte 110605

Dies führt zu dem Konzept von REST und der Art und Weise, wie das Web genutzt werden sollte. Es gibt eine ausgezeichnete podcast auf Software Engineering Radio, das einen ausführlichen Vortrag über die Verwendung von Get und Post hält.

Get wird verwendet, um Daten vom Server abzurufen, für die keine Aktualisierungsaktion erforderlich sein sollte. Die Idee dahinter ist, dass man dieselbe GET-Anfrage immer wieder verwenden kann und dieselben Informationen zurückbekommt. Die URL hat die "Get"-Informationen im Query-String, weil sie dazu gedacht ist, einfach an andere Systeme und Personen gesendet zu werden, die eine Adresse benötigen, wo etwas zu finden ist.

Post soll (zumindest in der REST-Architektur, auf der das Web irgendwie basiert) dazu dienen, Informationen an den Server zu übermitteln bzw. dem Server mitzuteilen, dass er eine Aktion durchführen soll. Beispiele wie: Diese Daten aktualisieren, diesen Datensatz erstellen.

4voto

Gili Punkte 80842

Es gibt nichts, was Sie nicht tun können. Der Punkt ist, dass Sie nicht angeblich um den Serverstatus bei einem HTTP-GET zu ändern. HTTP-Proxies gehen davon aus, dass es keinen Unterschied macht, ob ein Benutzer HTTP GET einmal oder 1000 Mal aufruft, da HTTP GET den Zustand nicht verändert. Aufgrund dieser Information gehen sie davon aus, dass es sicher ist, eine zwischengespeicherte Version des ersten HTTP-GET zurückzugeben. Wenn Sie die HTTP-Spezifikation verletzen, riskieren Sie, dass HTTP-Clients und Proxies in der freien Wildbahn nicht mehr funktionieren. Tun Sie es nicht :)

3voto

ceejayoz Punkte 170567

Ich sehe nicht ein Problem mit get aber, ich benutze es für einfache Dinge, wo es Sinn macht, Dinge auf die Abfragezeichenfolge zu halten.

Die Verwendung zur Aktualisierung des Status - wie ein GET von delete.php?id=5 eine Seite zu löschen - ist sehr riskant. Die Leute haben das herausgefunden, als Googles Web-Beschleuniger anfing, URLs auf Seiten vorzuholen - er traf alle "Lösch"-Links und löschte die Daten der Leute. Dasselbe kann auch mit Suchmaschinen-Spiders passieren.

3voto

Dmytro Punkte 2111

De RFC 2616 :

9.3 GET
Die GET-Methode bedeutet, dass Sie alle Informationen abrufen einer Entität), die durch die Anfrage-URI. Wenn sich die Request-URI auf einen datenproduzierenden Prozess, ist es die erzeugten Daten zurückgegeben werden als Entität in der Antwort zurückgegeben werden und nicht der Quelltext des Prozesses, es sei denn dieser Text ist zufällig die Ausgabe des des Prozesses.

9.5 POST
Die POST-Methode wird verwendet, um den Ursprungsserver aufzufordern die in der Anfrage enthaltene Entität Anfrage enthaltene Entität als neuen Unterordner der Ressource, die durch die Request-URI in der Anfrage-Zeile identifiziert wird. POST ist entworfen eine einheitliche Methode zu ermöglichen, die die folgenden Funktionen abdeckt:

  • Beschriftung der vorhandenen Ressourcen;
  • Senden einer Nachricht an ein Schwarzes Brett, eine Newsg ähnliche Gruppe von Artikeln;
  • Bereitstellung eines Datenblocks, z. B. des Ergebnisses von Submi Datenverarbeitungsprozess;
  • Erweitern einer Datenbank durch eine Anfügeoperation.

T POST-Methode ausgeführte Funktion wird durch den Server bestimmt und ist normalerweise abhängig von der Anfrage-URI. Die gepostete Entität ist dieser URI untergeordnet, so wie eine so wie eine Datei einem Verzeichnis untergeordnet ist Verzeichnis untergeordnet ist, das sie enthält, eine News Artikel einer Newsgroup untergeordnet ist Newsgroup untergeordnet ist, in der er gepostet wird, oder ein Datensatz einer Datenbank untergeordnet ist.

T Methode durchgeführte Aktion führt möglicherweise nicht zu einer Ressource die durch einen URI identifiziert werden kann. Unter diesem Fall wird entweder 200 (OK) oder 204 (No Inhalt) der geeignete Antwort Status, je nachdem, ob die Antwort eine Entität enthält, die das Ergebnis beschreibt.

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