Der Wikipedia-Eintrag zu HTTP listet die folgenden HTTP-Anforderungsmethoden auf:
- HEAD: Fragt nach der Antwort, die mit der identisch ist, die einer GET-Anforderung entsprechen würde, jedoch ohne den Antworttext.
- GET: Fordert eine Darstellung der angegebenen Ressource an.
- POST: Sendet zu verarbeitende Daten (z. B. aus einem HTML-Formular) an die identifizierte Ressource. Die Daten sind im Hauptteil der Anfrage enthalten.
- PUT: Lädt eine Darstellung der angegebenen Ressource hoch.
- LÖSCHEN: Löscht die angegebene Ressource.
- TRACE: Gibt die empfangene Anforderung zurück, sodass ein Client sehen kann, welche (falls vorhanden) Änderungen oder Ergänzungen von Zwischenservern vorgenommen wurden.
- OPTIONEN: Gibt die HTTP-Methoden zurück, die der Server für die angegebene URL unterstützt. Dies kann verwendet werden, um die Funktionalität eines Webservers zu überprüfen, indem '*' anstelle einer bestimmten Ressource angefordert wird.
- CONNECT: Konvertiert die Anforderungsverbindung in einen transparenten TCP / IP-Tunnel, um normalerweise die SSL-verschlüsselte Kommunikation (HTTPS) über einen unverschlüsselten HTTP-Proxy zu ermöglichen.
- PATCH: Wird verwendet, um teilweise Änderungen an einer Ressource vorzunehmen .
Ich bin daran interessiert zu wissen (speziell in Bezug auf die ersten fünf Methoden):
- Welche dieser Methoden können (sollen?) Nutzdaten empfangen?
- Wie empfangen sie die Methoden, die Nutzdaten empfangen können?
- über Abfragezeichenfolge in URL?
- über URL-codierten Körper?
- über rohen / klobigen Körper?
- über eine Kombination von ([allen / einigen]) der oben genannten?
- Wie empfangen sie die Methoden, die Nutzdaten empfangen können?
Ich freue mich über jede Eingabe, wenn Sie etwas (vorzugsweise leichtes) Lesen teilen könnten, wäre das auch großartig!
Hier ist die Zusammenfassung von RFC 7231 , einer aktualisierten Version des Links @Darrel :
Wie auch @John erwähnt hat, unterstützen alle Anforderungsmethoden Abfragezeichenfolgen in der URL (eine bemerkenswerte Ausnahme könnten OPTIONEN sein, die [in meinen Tests] nur dann nützlich zu sein scheinen, wenn die URL lautet
HOST/*
).Ich habe nicht die getestet CONNECT und PATCH Methoden , da ich kein Interesse an ihnen ATM haben.
quelle
Ich bin mir ziemlich sicher, dass nicht klar ist, ob GET-Anforderungen Nutzdaten haben können oder nicht. GET-Anforderungen senden im Allgemeinen Formulardaten über die Abfragezeichenfolge, genau wie HEAD-Anforderungen. HEAD ist im Wesentlichen GET - außer es möchte keinen Antwortkörper.
(Randnotiz: Ich sage, es ist nicht klar, weil eine GET-Anforderung technisch auf ein anderes Protokoll aktualisiert werden könnte. Tatsächlich hat eine Version von Websockets genau dies getan, und während einige Proxy-Software gut damit funktionierte, waren andere beim Handshake blockiert.)
POST hat im Allgemeinen einen Körper. Nichts hindert Sie daran, eine Abfragezeichenfolge zu verwenden, aber der POST-Text enthält im Allgemeinen Formulardaten in einem POST.
Für mehr (und detailliertere) Informationen würde ich die tatsächlichen HTTP / 1.1-Spezifikationen treffen .
quelle
POST
dass Nutzdaten über einen URL-codierten Text und / oder eine URL-Abfragezeichenfolge erwartet werden.GET
unterstützt Nutzlasten über Query - String - URL und ich denke , das gleiche mit den beiden passiert ,HEAD
und ,DELETE
aber ich bin nicht 100% sicher darüber. Ich habe Abschnitt 9 des HTTP / 1.1-RFC gelesen, aber es scheint mir nicht sehr klar zu sein.DELETE
Anfragen einen Text haben können oder nicht . Nichts im HTTP / 1.1-RFC verbietet dies jedoch. Und nun, eine Abfragezeichenfolge kann in jeder Anforderung enthalten sein, nicht nurGET
,HEAD
undDELETE
- die Tatsache, dass Formulardaten an body inPOST
und Abfragezeichenfolge inGET
gesendet werden, hängt möglicherweise mehr mit HTML zusammen als alles andere.