Sie haben vielleicht schon von GET- und POST-Anforderungen gehört, aber das ist erst der Anfang.

Jede HTTP-Anforderung verwendet eine Methode, um ihren wesentlichen Zweck zu beschreiben. Jede Methode hat spezifische Anwendungen für Aufgaben, die vom Abrufen einer Webseite bis zum Löschen einer Ressource reichen. GET und POST sind die beiden bekanntesten, aber es gibt noch sieben weitere.

Erfahren Sie mehr über dieses Konzept und wozu jede der neun möglichen HTTP-Methoden dient.

Was ist eine HTTP-Methode?

Jede von Ihnen gestellte HTTP-Anforderung enthält eine Aktion und ein Ziel für diese Aktion, ähnlich wie ein Verb und ein Substantiv, die als Objekt fungieren.

Die URL identifiziert eine eindeutige Ressource, die als Ziel der Anfrage dient. In der Zwischenzeit wird das Verb – welche Aktion für diese URL auszuführen ist – durch eine Methode dargestellt.

Die erste Zeile einer HTTP-Anforderung enthält die wichtigsten Informationen, einschließlich der HTTP-Version, der Ressourcen-URL und der Anforderungsmethode:

instagram viewer
GET /software/htp/cics/index.html HTTP/1.1

Was sind die 9 HTTP-Methoden?

Die ersten vier Methoden sind Äquivalente der vier Aktionen aus dem CRUD-Modell: Erstellen, Lesen, Aktualisieren und Löschen. Die jeweiligen HTTP-Methoden sind POST, ERHALTEN, SETZEN, Und LÖSCHEN.

ERHALTEN

Die häufigste Standardanfrage, die Sie senden, wenn Sie im Internet surfen und auf Links klicken oder Daten über eine API anfordern. Der Server sollte die Ressource in seinem Antworttext zurückgeben.

POST

Verwenden Sie POST, um neue Ressourcen zu erstellen, insbesondere wenn diese Ressourcen eine identifizierbare übergeordnete Ressource haben. Wenn Sie beispielsweise über eine /clients-Ressource verfügen, sollten Sie einen neuen Client erstellen, indem Sie die erforderlichen Daten per POST an /clients senden.

SETZEN

Aktualisieren oder ersetzen Sie eine vorhandene Ressource. Dies ähnelt POST, aber der Client ist dafür verantwortlich, einen eindeutigen Bezeichner für die Ressource auszuwählen. Um eine Ressource mit PUT zu erstellen, sollte die Ressourcen-URL einen Bezeichner enthalten, z. B. /clients/007.

LÖSCHEN

Verwenden Sie diese Methode, um die Ressource zu löschen, die Sie in der URL angeben. Wie bei allen HTTP-Methoden liegt die Unterstützung beim Server. Es kann jedem ermöglichen, eine Ressource zu löschen, obwohl dies eindeutig riskant wäre. Ein Server, der DELETE unterstützt, wird normalerweise benötigt Authentifizierung und Autorisierung.

Zwei weitere Methoden bieten leichte Variationen der oben genannten: PATCH Und KOPF. Sie können sie nützlich finden, wenn Sie bestimmte APIs verwenden oder wenn Sie Ihre eigenen erstellen.

PATCH

Die PATCH-Methode aktualisiert eine vorhandene Ressource nur mit Teildaten. Mit anderen Worten, Sie müssen nicht die vollständige Darstellung der neuen Ressource angeben, sondern nur die Felder, die Sie aktualisieren müssen.

KOPF

Eine HEAD-Anforderung wird verwendet, wenn Sie Informationen zu einer Ressource wünschen, aber nicht die Ressource selbst. Die Antwort enthält keinen Text, aber eine Reihe nützlicher HTTP-Header. Sie können die Gesamtgröße einer Datei vor dem Herunterladen über den Content-Length-Antwortheader ermitteln.

Die restlichen Methoden—OPTIONEN, VERBINDEN, Und VERFOLGEN– sind undurchsichtiger. Sie befassen sich mit Metadaten, Netzwerken und Fehlerbehebung. Sie können sie bei bestimmten Programmierarten nützlich finden, aber Sie werden sie wahrscheinlich nicht jeden Tag verwenden.

OPTIONEN

Ein Server sollte auf diese Methode antworten, indem er Ihnen mitteilt, welche HTTP-Methoden die Ressource tatsächlich unterstützt. Dies kann für die Entdeckung nützlich sein.

VERBINDEN

Bestimmte Arten von Netzwerksoftware können diese Methode verwenden, um einen Tunnel zwischen zwei Computern einzurichten. Dies wird häufig verwendet, um eine HTTPS-Verbindung über einen Proxy zu initiieren.

VERFOLGEN

Diese Methode ist nützlich für die Fehlerbehebung. Nach Erhalt sollte der Server die empfangene Anfrage im Antworttext zurücksenden. Das Verfahren stellt einen Mechanismus bereit, um zu prüfen, ob zwischengeschaltete Maschinen Details der Anfrage geändert haben.

GET und HEAD sind die einzigen beiden Methoden, die jeder allgemeine Webserver unterstützt. Ein bestimmter Server kann andere Methoden unterstützen oder auch nicht, daher sollten Sie dies zuerst überprüfen.

Wann könnten Sie diese Methoden verwenden?

Meistens sind HTTP-Methoden für Sie transparent. Sie müssen sie jedoch berücksichtigen, wenn Sie einer Webseite ein Formular hinzufügen oder eine API verwenden.

HTTP-Methoden in HTML

Der form Element Methode Mit dem Attribut können Sie die HTTP-Methode festlegen, die beim Absenden des Formulars verwendet werden soll. HTML unterstützt nur die Post Und erhalten Werte für dieses Attribut – plus eine obskure Dialogalternative.

<formMethode="Post">
...
form>

Sie können Funktionen wie verwenden Die Entwicklertools von Chrome sehen Netzwerk Datenverkehr und bestätigen Sie die Methode, die Ihr Browser für eine bestimmte Anfrage sendet. Beachten Sie, dass die meisten Webformulare einen POST senden, da sie normalerweise Daten auf dem Server aktualisieren. Viele Suchformulare verwenden jedoch GET, da sie einfach Daten abrufen, ohne sie zu ändern.

Da POST-Daten nicht Teil der URL sind, sind sie privater, als wenn Sie sie über ein GET senden. Die Daten sind immer noch im Text der Anfrage vorhanden, wo sie theoretisch von einem Angreifer abgefangen werden können. Aber das Senden von Daten über HTTPS sollte dieses Problem entschärfen.

Sie sollten niemals eine Benutzeranmeldung mit GET-Anforderungen implementieren. Auch wenn die Anmeldung eher wie ein Lesevorgang als eine Erstellung oder Aktualisierung erscheint, müssen Sie dennoch POST verwenden, um die Daten zu sichern.

Da HTML-Formulare nur GET und POST unterstützen, können Sie nicht direkt ein Formular erstellen, das beispielsweise eine Ressource auf dem Server löscht. Eine gängige Problemumgehung, die die REST-Prinzipien auf dem Server respektiert, besteht darin, eine Platzhaltervariable zu verwenden und vorzugeben, dass dies die ursprüngliche HTTP-Methode war. Zum Beispiel:

<formMethode="Post">
<EingangTyp="versteckt"Name="_Methode"Wert="LÖSCHEN" />
...
form>

Ihr serverseitiger Code kann das Vorhandensein dieser Variable „Proxy-Methode“ überprüfen und sie so behandeln, als wäre sie die tatsächlich verwendete Methode. Zum Beispiel in PHP:

$methode = $_SERVER["REQUEST_METHOD"];

Wenn (array_key_exists("_Methode", $_REQUEST)) {
$methode = $_REQUEST["_Methode"];
}

Programmatisches Senden von HTTP-Anforderungen

Die Web-Fetch-API stellt eine fetch()-JavaScript-Funktion bereit, mit der Sie eine HTTP-Anforderung senden können. Es unterstützt die gesamte Bandbreite an Methoden, nicht nur GET und POST, die HTML unterstützt.

Die Abruffunktion sendet standardmäßig eine GET-Anfrage. Um eine andere Methode zu verwenden, geben Sie ihren Namen als Wert für a an Methode -Eigenschaft in einem Objekt, das Sie als zweites Argument senden.

bringen(' https://example.com/', { Methode: "KOPF" });

Sie können auch HTTP-Anforderungen von vielen serverseitigen Sprachen, einschließlich PHP, senden. In dieser Sprache ist die Curl-Bibliothek eine gängige Methode zum Senden solcher Anfragen.

Die Curl-Bibliothek verfügt über eine CURLOPT_CUSTOMREQUEST-Option, die Sie festlegen können, um eine Methode anzugeben

Wenn ($ch = curl_init($url)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'SETZEN');
curl_exec($ch);
// ...
}

Über die Befehlszeile

Das Curl-Befehlszeilentool ermöglicht die Übertragung von Daten zu oder von einem Server über eines von mehreren Protokollen. HTTP (und HTTPS) sind zwei sehr häufige Anwendungsfälle.

Standardmäßig sendet curl eine GET-Anfrage, wie Sie mit folgendem Befehl bestätigen können:

curl -v -s -o /dev/null example.com/get-test

Sie können die Anforderungsmethode in der fünften Zeile der Ausgabe sehen:

Sie können die von curl gesendete Anfragemethode mit dem Flag -X ändern:

curl -v -s -o /dev/null example.com/get-test -X POST

Jetzt sendet curl eine Anfrage mit der POST-Methode:

HTTP hat viele Verwendungen

Das meiste, was Sie im Web tun, beinhaltet standardmäßige GET-Anforderungen, mit gelegentlichem POST für Formularübermittlungen. Aber HTTP ist ein viel ausdrucksstärkeres Protokoll, als dies vermuten lässt.

Einige der gebräuchlichsten Methoden spiegeln das CRUD-Modell wider, was HTTP zu einer hervorragenden Grundlage für den Aufbau einer ressourcenorientierten API macht.