Wann benutzt du POST und wann verwendest du GET?
Von dem, was ich sammeln können, es gibt drei Kategorien:
- Verwenden Sie niemals
GET
und verwendenPOST
- Verwenden Sie niemals
POST
und verwendenGET
- Es spielt keine Rolle, welches Sie benutzen.
Bin ich richtig in der Annahme diesen drei Fällen? Wenn dem so ist, was sind einige Beispiele aus jedem Fall?
Kommentar zu dem Problem
Das ist eigentlich absolut nicht wahr. GET und POST sind sowohl sichtbar als auch im gleichen Umfang, wenn Sie heraus überprüfen die Header gesendet, die von Ihrem browser finden Sie eine Liste von Schlüssel-Wert-Paare, die Sie veröffentlichen
Es gibt keine standard-Weg, um zu Kodieren, mehr als die Namen -> Wert-Paare in query-strings, so es sei denn, Ihre Wünsche sind sehr basic(also keine arrays oder verschachtelte Datenstrukturen) sollten Sie berücksichtigen, POST nur die eine Text-Feld, das Sie verwenden können mit encoding-Formate (JSON, XML etc).
InformationsquelleAutor der Frage Thomas Owens | 2008-09-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
POST
für destruktive Aktionen wie Schöpfung (ich bin mir bewusst, dass die Ironie), Bearbeiten und löschen, denn Sie können nicht schlagen einPOST
action in die Adresszeile Ihres Browsers. VerwendenGET
wenn es ist sicher zu ermöglichen, eine person zu nennen, die eine Aktion. So eine URL wie:Sollten Sie bringen eine Bestätigungs-Seite, anstatt einfach nur dieses Element zu löschen. Es ist viel einfacher, um Unfälle zu vermeiden, diese Weise.
POST
ist auch sicherer alsGET
, weil Sie nicht kleben-Informationen in einer URL. Und so mitGET
alsmethod
für ein HTML-Formular, sammelt ein Passwort oder andere sensible Informationen nicht die beste Idee.Eine Letzte Anmerkung:
POST
übertragen können, eine größere Menge an Informationen alsGET
. Ich erinnere mich nicht an die genauen Einschränkungen von jedem, aber der Vorteil ist signifikant.InformationsquelleAutor der Antwort Brian Warshaw
In kurzen
GET
fürsafe and idempotent
AnfragenPOST
fürneither safe nor idempotent
AnfragenIn details
Es gibt einen richtigen Platz für jeden. Auch wenn Sie nicht Folgen Erholsam Prinzipien, kann viel gewonnen werden, vom lernen über REST und wie eine Ressourcen-orientierte Ansatz funktioniert.
Einen
safe
operation ist eine operation, die nichtnot change the data
angefordert.Einer
idempotent
operation ist eine, in der das Ergebnisbe the same
egal wie oft Sie es verlangen.Liegt es nahe, dass, wie Wird verwendet für sicher Operationen sind Sie automatisch auch idempotent. In der Regel wird eine GET wird zum abrufen einer Ressource (eine Frage und die zugehörigen Antworten auf stack overflow zum Beispiel) oder eine Sammlung von Ressourcen.
Ich weiß, die Frage war über GET und POST, aber ich werde zurück zu POST in einer Sekunde.
In der Regel eine PUT-dient zum Bearbeiten einer Ressource (Bearbeitung einer Frage oder einer Antwort auf stack overflow zum Beispiel).
In der Regel eine POST verwendet werden, zum erstellen einer neuen Ressource zum Beispiel das erstellen einer NEUEN Frage ALSO (obwohl bei manchen Konstruktionen ein, werden für diese auch).
Wenn Sie die POST zweimal, würden Sie am Ende die Schaffung von ZWEI neuen Fragen.
Diskussion
In der Praxis modernen web-Browser in der Regel unterstützen nur GET-und POST-zuverlässig (die Sie durchführen können diese Operationen über javascript aufgerufen werden, aber in Bezug auf die Eingabe von Daten in Formulare und submit drücken, Sie haben in der Regel bekam die beiden Optionen). In einer Erholsamen Anwendung der POST wird oft überschrieben werden, bieten PUT-und DELETE-Aufrufe auch.
Aber, auch wenn Sie nicht nach Erholsamen Prinzipien, kann es nützlich sein, zu denken, in Bezug auf die Verwendung von GET zum abrufen /anzeigen der Informationen und BEITRAG für die Erstellung /Bearbeitung von Informationen.
Verwenden Sie niemals BEKOMMEN für eine operation verändert die Daten. Wenn eine Suchmaschine kriecht einen link zu Ihrer bösen op, oder die client-Lesezeichen, könnte es Zauber große Schwierigkeiten.
InformationsquelleAutor der Antwort reefnet_alex
Verwenden Sie GET, wenn Sie nichts dagegen haben die Anfrage wird wiederholt (es ändert sich nicht, Staat).
Verwenden Sie POST, wenn die operation ändert die Systemstatus.
InformationsquelleAutor der Antwort Douglas Leeder
Kurze Version
BEKOMMEN: in der Regel verwendet für die eingereichten suchen, Anfragen oder bei Anfragen, wo Sie möchten, dass der Benutzer in der Lage sein, ziehen Sie die genaue Seite wieder.
Vorteile:
Nachteile:
POST: für höhere Sicherheits-Anforderungen, bei denen die Daten können verwendet werden, ändern Sie eine Datenbank oder eine Seite, die Sie nicht wollen, dass jemand zu Lesezeichen.
Vorteile der POST:
Nachteile der POST:
Längere Version
Direkt von der Hypertext Transfer Protocol -- HTTP/1.1:
InformationsquelleAutor der Antwort Cimplicity
Die erste wichtige Sache ist die Bedeutung von GET gegenüber POST :
Danach, ein paar Dinge, die bemerkt werden können :
Wie auch immer, ich glaube nicht, dass konnten wir "live", ohne zu BEKOMMEN : überlegen Sie, wie viele URLs mit Parametern im query-string, jeden Tag-ohne zu BEKOMMEN, alle diejenigen, die nicht arbeiten würden 😉
InformationsquelleAutor der Antwort Pascal MARTIN
Abgesehen von der Länge constraints Unterschied in vielen web-Browsern, es gibt auch einen semantischen Unterschied. Bekommt werden soll "sicher" sein, dass Sie nur-lese-Operationen, die keine Auswirkungen auf den server-Status. Beiträge werden in der Regel ändert sich der Zustand und geben Warnungen auf Wiedervorlage. Suchmaschinen-web-crawler machen kann Bekommt, sollte aber nie Beiträge.
Verwenden Sie GET, wenn Sie wollen, um Daten zu Lesen, ohne seinen Zustand verändern, und verwenden Sie POST, wenn Sie möchten, update-Status auf dem server.
InformationsquelleAutor der Antwort Mark Byers
Meine Allgemeine Faustregel ist, verwenden Sie Get, wenn Sie die Anforderungen an den server, die nicht Vorhaben zu ändern Staates. Beiträge sind reserviert für Anforderungen an den server, alter Staat.
InformationsquelleAutor der Antwort TonyLa
Einen praktischen Unterschied ist, dass Browser und Webserver ein limit für die Anzahl von Zeichen, die vorhanden sein können, die in einem URL. Es unterscheidet sich von Anwendung zu Anwendung, aber es ist sicherlich möglich, es zu schlagen, wenn Sie haben
textarea
s in Ihren Formen.Anderen gotcha mit Bekommt - Sie bekommen von Suchmaschinen indexiert wird, und andere automatische Systeme. Google hatte einmal ein Produkt, mit dem pre-fetch-links auf die Seite, die Sie betrachten, so würden Sie schneller zu laden, wenn Sie auf diese links. Es verursacht großen Chaos auf Websites, die links wie
delete.php?id=1
- Leute verloren Ihre gesamten Websites.InformationsquelleAutor der Antwort ceejayoz
Verwenden Sie GET, wenn Sie möchten, dass die URL zu reflektieren, den Status der Seite. Dies ist nützlich für die Anzeige von dynamisch generierten Seiten, wie diese hier gesehen. Ein POST sollte verwendet werden, in einem Formular Daten übermittelt, wie wenn ich auf die "Post-Ihre Antwort" - button. Es produziert auch ein sauberer URL, da es nicht erzeugen ein parameter-string nach Pfad.
InformationsquelleAutor der Antwort Kyle Cronin
Da Bekommt sind rein URLs, Sie werden vom Internet-browser zwischengespeichert und kann besser genutzt werden für Dinge wie konsequent erzeugten Bilder. (Mit einem Ablaufdatum)
Einem Beispiel aus der gravatar-Seite: http://www.gravatar.com/avatar/4c3be63a4c2f539b013787725dfce802?d=monsterid
BEKOMMEN kann yeild geringfügig bessere Leistung, manche Webserver schreiben, der POST-Inhalt in eine temporäre Datei, die vor dem Aufruf der Prozedur.
Andere Sache zu prüfen, ist die Größe beschränken. Bekommt sind begrenzt durch die Größe des URL, 1024 bytes von der Norm, allerdings können Browser mehr unterstützen.
Übertragung von mehr Daten als die, sollten einen BEITRAG, um bessere browser-Kompatibilität.
Sogar noch weniger als die Begrenzung ist ein problem, wie ein anderer poster schrieb, nichts in der URL könnte am Ende in andere Teile der Browser-Benutzeroberfläche, wie eine Geschichte.
InformationsquelleAutor der Antwort davenpcj
Gibt es nichts, was Sie nicht tun können, per se. Der Punkt ist, dass man nicht soll zum ändern des server-Status auf einem HTTP-GET. HTTP-proxies übernehmen, da die HTTP-GET hat nicht den Status zu ändern, dann, ob ein Benutzer ruft eine HTTP-GET-einmal oder 1000 mal, macht keinen Unterschied. Mit Hilfe dieser Informationen, die Sie übernehmen ist es sicher, um wieder eine zwischengespeicherte version der ersten HTTP-GET. Wenn Sie brechen die HTTP-Spezifikation, die Sie den Bruch mit HTTP-Clients und-Proxys in der wildnis. Tun Sie es nicht 🙂
InformationsquelleAutor der Antwort Gili
Diese Traversen, die in das Konzept von REST und wie das web war irgendwie gedacht Einsatz. Es ist eine ausgezeichnete podcast auf Software-Engineering-radio, das gibt einem in der Tiefe sprechen über die Verwendung von Get und Post.
Get verwendet, um pull-Daten von dem server, wo eine update-Aktion sollte nicht erforderlich sein. Die Idee ist, dass Sie sollten in der Lage sein, verwenden Sie die GET-Anforderung über und über und haben die gleiche Informationen zurück. Die URL die get-Informationen im query-string, weil es bedeutete, in der Lage sein, um Sie leicht an andere Systeme und die Menschen wie eine Adresse auf, wo etwas zu finden.
Post verwendet werden soll (zumindest von den REST-Architektur, die das web ist, ist ein bisschen basiert), zum pushen von Informationen auf dem server/der dem server mitteilt, um eine Aktion auszuführen. Beispiele wie: Aktualisieren Sie diese Daten, Erstellen Sie diesen Eintrag.
InformationsquelleAutor der Antwort kemiller2002
1.3 Kurze Checkliste für die Auswahl HTTP
GET
oderPOST
Verwenden, wenn:
Verwenden Sie POST, wenn:
Quelle.
InformationsquelleAutor der Antwort Anagha
Verwenden, um den update-Stand wie einer von
delete.php?id=5
um eine Seite zu löschen, ist sehr riskant. Menschen fand heraus, dass, wenn Google 's web accelerator gestartet prefetching URLs auf den Seiten - es traf alle die "löschen" - links und ausgelöscht Völker' Daten. Gleiche kann passieren, mit für Suchmaschinen.InformationsquelleAutor der Antwort ceejayoz
POST verschieben können große Daten-während BEKOMMEN kann.
Aber im Allgemeinen ist es nicht über eine shortcomming BEKOMMEN, sondern eine Konvention, wenn Sie möchten, dass Ihre Webseite/webapp, um sein Verhalten schön.
Haben Sie einen Blick auf http://www.w3.org/2001/tag/doc/whenToUseGet.html
InformationsquelleAutor der Antwort cherouvim
Vom RFC 2616:
InformationsquelleAutor der Antwort Dmytro
Die ursprüngliche Absicht war, die ERHALTEN wurde, verwendet, um Daten zurück und war nach etwas zu sein. Die Faustregel, die ich benutze, ist, dass, wenn ich schicke alles wieder zurück an den server, verwende ich POST. Wenn ich bin nur der Aufruf einer URL, um wieder Daten, die ich verwenden BEKOMMEN.
InformationsquelleAutor der Antwort Chris Miller
Lesen Sie die Artikel über HTTP in der Wikipedia. Es wird erklärt, was das Protokoll ist und was es tut:
und
Hat das W3C ein Dokument mit dem Namen URIs, die Adressierbarkeit und die Verwendung von HTTP GET und POST, die erklärt, Wann, was. Unter Berufung auf
und
Einem praktische Beispiel wäre, wenn Sie senden eine HTML-form. Geben Sie entweder post oder bekommen für das form action. PHP füllen Sie $_GET und $_POST entsprechend.
InformationsquelleAutor der Antwort Gordon
In PHP,
POST
Daten-limit ist in der Regel von Ihremphp.ini
.GET
ist begrenzt durch die server - /browser-Einstellungen, glaube ich - in der Regel rund255
bytes.InformationsquelleAutor der Antwort jellyfishtree
Verwende ich POST, wenn ich nicht wollen, Menschen zu sehen, die QueryString-oder wenn der QueryString wird groß. Auch die POST benötigt für Datei-uploads.
Sehe ich nicht ein problem mit BEKOMMEN, obwohl ich Sie bei einfachen Dingen, wo es Sinn macht, um die Dinge auf den QueryString.
Mit GET wird die Verknüpfung zu einer bestimmten Seite möglich, wo die POST nicht funktionieren würde.
InformationsquelleAutor der Antwort John Boker
Einfache version des POST GET PUT DELETE
verwenden Sie GET - wenn Sie möchten, um jede Ressource, wie die Liste der Daten basierend auf einer Id oder Name
verwenden Sie den POST - wenn Sie möchten, senden Sie alle Daten an server. Bedenken POST ist schwere operation, da für die updation sollten wir nutzen, SETZEN Sie statt der POST
intern wird die POST neue Ressource erstellen
verwenden SETZEN - wenn Sie
InformationsquelleAutor der Antwort Rajesh
Vom w3schools.com:
Wir unterscheiden hier die wichtigsten Unterschiede:
InformationsquelleAutor der Antwort Madhusudhan Reddy
GET und POST grundsätzlich Informationen zurück an den webserver über einen browser (oder eine andere HTTP-client, der für diese Angelegenheit).
Vorstellen, dass Sie ein Formular auf einer HTML-Seite und klicken auf die Schaltfläche "senden" sendet die Daten in das Formular an den server zurück, die als "name=value" - Paaren.
Wahl BEKOMMEN, wie die "Methode" append all die Daten an die URL an und es wird zeigen, bis in der URL-Leiste Ihres Browsers. Die Menge der Informationen, die Sie senden können zurück, mit einem BEKOMMEN ist eingeschränkt, da URLs können nur 1024 Zeichen.
Den Herausforderungen des Cloud-Integration
Jetzt Herunterladen
Ein POST auf der anderen Seite wird (in der Regel) senden der Informationen über einen socket zurück an den webserver, und es wird nicht zeigen, bis in der URL-Leiste. Sie können senden viel mehr Informationen an den server auf diese Weise - und es ist nicht nur die textuellen Daten. Es ist möglich, um Dateien zu senden und auch binäre Daten, wie serialisierte Java-Objekte!
InformationsquelleAutor der Antwort amit pandya
Sowie eine größere Sache ist etwas, die Sie Einreichen, über
GET
ist ausgesetzt über die URL. Zweitens als Ceejayoz sagt, es gibt ein limit an Zeichen für eine URL.InformationsquelleAutor der Antwort prodigitalson
Weiterer Unterschied ist, dass POST erfordert in der Regel zwei HTTP-Operationen, in der Erwägung, dass zu BEKOMMEN, erfordert nur eine.
Edit: ich sollte klarstellen,--für common programming patterns. In der Regel als Reaktion auf eine Stelle mit einem geraden HTML-web-Seite ist ein fragwürdiges design für eine Vielzahl von Gründen, von denen ist das lästige "Sie müssen Sie erneut Einreichen dieses Formulars, gehen Sie so tun möchten?", drücken Sie die zurück-Taste.
InformationsquelleAutor der Antwort Plynx
Als beantwortet, von anderen, es gibt eine Grenze, die auf url-Größe mit bekommen, und Dateien, die eingereicht werden können, mit der post nur.
Ich möchte noch hinzufügen, dass man kann Dinge hinzufügen zu einer Datenbank Holen und ausführen von Aktionen mit einem post. Wenn ein Skript empfängt die post-oder get, es kann alles tun, was der Autor will. Ich glaube, der Mangel an Verständnis kommt aus dem Wortlaut des Buches ausgewählt haben oder wie Sie es Lesen.
Einen script-Autor sollte die Beiträge um die Datenbank zu ändern und verwenden Sie nur für den Abruf von Informationen.
Scripting-Sprachen zur Verfügung gestellt viele Mittel, mit denen der Zugang der Anforderung. Zum Beispiel, PHP, ermöglicht die Verwendung von
$_REQUEST
abrufen, entweder ein post oder ein get auf. Sollte man vermeiden diese zu Gunsten der spezifischen$_GET
oder$_POST
.In web-Programmierung, es gibt viel mehr Raum für interpretation. Es ist das, was man sollte und was man können tun, aber welche besser ist, ist oft zur Debatte. Zum Glück, in diesem Fall gibt es keine Mehrdeutigkeit. Sie sollten Beiträge, Daten zu ändern, und Sie sollten get zum abrufen von Informationen.
InformationsquelleAutor der Antwort Elizabeth Buckwalter
Gorgapor,
mod_rewrite
noch oft verwendetGET
. Es ist nur erlaubt zu übersetzen, eine freundlichere URL in eine URL mit einemGET
query-string.InformationsquelleAutor der Antwort Brian Warshaw
HTTP Post-Daten nicht über ein bestimmtes limit auf den Umfang der Daten, wo, wie die verschiedenen Browser haben unterschiedliche limits für BEKOMMEN. Die RFC-2068 Staaten:
Insbesondere sollten Sie die richtigen HTTP-Konstrukte für das, was Sie gewohnt sind. HTTP-GET-s nicht sollte haben Nebenwirkungen und können problemlos aktualisiert und gespeichert, die von HTTP-Proxies, etc.
HTTP-POST verwendet werden, wenn Sie möchten, senden von Daten, die gegen eine url-Ressource.
Ein typisches Beispiel für die Verwendung von HTTP GET auf die Suche, d.h. Suchen?Abfrage=mein+Abfrage
Ein typisches Beispiel für die Verwendung eines HTTP-POST ist das senden von feedback zu einem online-Formular.
InformationsquelleAutor der Antwort mythz