2016-05-18 4 views
0

Ich weiß es eine grundlegende Frage, aber ich war nicht in der Lage, eine Antwort zu finden. Meine Frage ist, warum wir die POST-Methode in Ruhe brauchen, wenn wir sogar Daten von der GET-Methode einfügen können. Wenn es eine bestimmte Funktionalität gibt, die den POST von GET unterscheidet.Warum brauchen wir GET und POST-Methode in RestFul, wenn GET kann als POST auch

Danke.

+1

"Wir können sogar Daten aus der GET-Methode einfügen" ... Wir können keine Daten mit GET einfügen. GET soll nur die Daten lesen. – sauumum

+2

1) In POST sind die Daten im Körper und können theoretisch unbegrenzte Größe haben, während GET die Parameter in der URL-Abfrage hat und es mehrere URL-Größenbeschränkungen gibt - vom Browser, von der Firewall, von Routern, von der Server usw. 2) POST ist definiert als etwas zu ändern, während GET nichts auf dem Server ändern soll. So werden Browser GET-Anfragen beim Navigieren oder erneuten Versuch frei senden, aber den Benutzer warnen, wenn ein POST erneut gesendet werden sollte, um zu verhindern, dass sie beispielsweise zweimal etwas kaufen. Aus dem gleichen Grund werden POST-Ergebnisse nicht zwischengespeichert. – CherryDT

+0

Ich denke, dass Sie den Unterschied zwischen PUT und POST wissen wollen. Wenn meine Annahme richtig ist, schauen Sie bitte http://stackoverflow.com/questions/630453/put-vs-post-in-rest. – sauumum

Antwort

2

Es ist eine gute Praxis, die Standardmethoden durch das HTTP-Protokoll zu nutzen, die Anforderungen für einen Web-Service Erholsamer zu behandeln: einem Datensatz zu aktualisieren

  • GET Daten
  • POST abrufen
  • PUT einen Datensatz
  • DELETE, um einen Datensatz

nach dieser Konvention zu löschen ist einfach, für eine perso Um eine Bibliothek zu verstehen, die er nicht kennt.

nur eine Idee zu haben, wenn ich alle Unternehmen ein bestimmtes Unternehmen von 1

GET /companies/1 

identifizierbaren abzurufen

GET /companies 

erhalten muß, ein neues Unternehmen zu erstellen:

PUT /companies 

TO aktualisieren Sie das Unternehmen identifizierbar durch 1

POST /companies/1 

Um das Unternehmen von 1

DELETE /companies/1 

und sich dieses Konzept identifiziert zu löschen, alle Familienangehörigen des Unternehmens 1

GET /companies/1/dependents 

abrufen Um alle Rechnungen eines Unternehmens abrufen

GET /companies/1/invoices 

und so weiter.

Wie Sie sehen können, wenn Sie wissen, was Sie tun möchten, ist es einfach, alle URLs neu zu erstellen, zu ändern, zu erstellen, Daten zu löschen. Es ist nicht notwendig, dieser Konvention zu folgen, aber es ist eine gute Idee, besonders wenn Sie einen Webdienst erstellen, der von außerhalb Ihres Unternehmens verwendet werden kann, wo es wichtig ist, einen Standard für alle zu definieren.


Zusätzlich können Methoden GET zwischengespeichert werden, und es ist leicht für die bestehende Infrastruktur (Proxies, Firewalls), das zu tun.

1

Sie sind verschiedene Methoden und haben unterschiedliche Zwecke und Spezifikationen.

Einige andere Hinweise auf GET-Anfragen:

  • GET-Anfragen können
  • GET-Anfragen bleiben in der Browser-History
  • GET-Anfragen vorgemerkt werden können
  • GET-Anforderungen sollten nicht zwischengespeichert werden verwendet im Umgang mit sensiblen Daten
  • GET-Anfragen haben Längenbeschränkungen
  • GET-Anfragen sollten nur Daten verwendet werden

Einige andere Hinweise auf POST-Anfragen abzurufen:

  • POST-Anfragen sind nie
  • POST-Anfragen im Cache nicht im Browserverlauf bleiben
  • POST Anforderungen können nicht mit einem Lesezeichen versehen werden.
  • POST-Anforderungen haben keine Beschränkungen für die Datenlänge

Sie sollten entsprechend verwendet werden. Für weitere Informationen zur Verwendung und Spezifikation, look here.