Und wir kommen zum zweiten Teil des Tutorials oder Leitfadens zu grundlegenden Konzepten, die ein Entwickler über das HTTP-Teil-II-Protokoll wissen sollte . In diesem zweiten Teil werden die Verben einer HTTP-Anforderung und die Statuscodes einer HTTP-Antwort behandelt .
Verben einer HTTP-Anfrage.
Dieser Abschnitt könnte auch als die verschiedenen Arten von HTTP-Anforderungen bezeichnet werden , da sie normalerweise durch die Art des verwendeten Verbs identifiziert werden. HTTP-Verben geben die Aktion an, die auf einem Host ausgeführt werden soll. Wenn der Server beispielsweise eine HTML-Seite anzeigen soll (z. B. eine index.html), ist GET das am besten geeignete HTTP-Verb. Viele Autoren, die sich auf das Verb GET beziehen, sprechen von dem Sprichwort “dass eine GET-Anfrage gestellt wird” .
Wenn Sie sich erinnern, als wir im ersten Teil dieses Tutorials über die Anforderungsheader gesprochen haben, war einer der Anforderungsheader, die in einem Bild ausgegeben wurden:
GET / HTTP/1.1 Host: www.google.es Connection: keep-alive
Wie wir sehen können, wird das GET-Verb im Anforderungsheader angezeigt, dh die Verben werden in den Headern einer HTTP-Anforderung angegeben und definieren die Art und Weise, wie wir mit dem Server interagieren .
Bisher haben wir gesehen, wozu die Verben da sind (sie definieren, wie mit dem Server umgegangen werden soll) und wo wir sie finden (in den Headern der HTTP-Anforderungen). Jetzt werden wir die verschiedenen Arten von Verben analysieren und anzeigen.
Arten von HTTP-Verben (gemäß RFC2616)
- GET : Ruft die durch die URL angegebene Ressource ab. Die URL enthält alle Informationen, die zum Auffinden und Abrufen der Ressource erforderlich sind.
- POST : Senden oder Übermitteln von Daten, die von der in der URL angegebenen Ressource verarbeitet werden sollen. Normalerweise werden die gesendeten Daten im Hauptteil der Anforderung angegeben. Das gebräuchlichste Beispiel ist, wenn wir ein Bild über den Browser auf einen Server hochladen, da das verwendete Verb POST ist und die Binärdaten des Bildes im Hauptteil der Anforderung angegeben sind.
- PUT : Hochladen oder Aktualisieren einer angegebenen Ressource. Dies ist die effizienteste Methode zum Hochladen von Dateien auf einen Server. Sie wird jedoch nicht mehr empfohlen, da bei den meisten Hosting-Unternehmen dieses Verb deaktiviert ist. Daher war die Verwendung des POST-Verbs beim Hochladen von Dateien weit verbreitet.
- LÖSCHEN : Löscht die angegebene Ressource.
- HEAD : Ruft nur die Header einer Anfrage ab. Es ist ein Verb ähnlich wie GET, nur dass GET neben den Headern auch den Hauptteil der Antwort erhält.
- TRACE : Diese Methode wird zu Diagnosezwecken verwendet, da der Server aufgefordert wird, alle Daten der gesendeten Anforderung zu senden.
- OPTIONEN : Es wird verwendet, um eine Liste der vom Server unterstützten HTTP-Methoden abzurufen (mit anderen Worten, es informiert uns über die vom Server unterstützten Verben).
- CONNECT : Wird verwendet, um zu wissen, ob wir Zugriff auf einen bestimmten Host haben.
Arten von Statuscodes einer HTTP-Antwort (gemäß RFC2616)
Mit einer URL und Verben kann ein Client eine HTTP-Anforderung an einen Server senden. Auf diese Anfrage antwortet der Server mit einem Statuscode. In diesem Abschnitt werden die verschiedenen Statuscodes einer HTTP-Antwort angezeigt. Diese Antwortcodes müssen nicht alle auswendig kennen. Es reicht aus, zu wissen, was jede Serie bedeutet (z. B. 2xx erfolgreiche Operation, 4xx Fehler usw.), und dann die Liste für die Abfrage bereitzuhalten.
- 1xx: Informationsmeldungen.
- 100 – 101 Verbindung abgelehnt.
- 2xx: Meldungen über erfolgreichen Betrieb.
- 200 OK
- 201-203 Inoffizielle Informationen
- 204 Kein Inhalt
- 205 Inhalte zum Neuladen
- 206 Teilinhalt
- 3xx: Code umleiten.
- 301 Permanent bewegt
- 302 gefunden
- 303 Siehe andere
- 304 Nicht geändert
- 305 Verwenden Sie einen Proxy
- 307 Temporäre Umleitung
- 4xx: Clientfehler.
- 400 Falsche Anfrage
- 401 Nicht autorisiert
- 402 Zahlung erforderlich
- 403 Verboten
- 404 nicht gefunden
- 409 Konflikt
- 410 Nicht mehr lieferbar
- 412 Vorbedingung fehlgeschlagen
- 5xx: Serverfehler.
- 500 Interner Fehler
- 501 Nicht implementiert
- 502 Falsches Gateway
- 503 Service nicht verfügbar
- 504 Gateway-Zeitüberschreitung
- 505 HTTP-Version wird nicht unterstützt
Wenn Sie hierher gekommen sind, um alle Abschnitte des Handbuchs zu verstehen, haben Sie bereits genügend Kenntnisse, um den Wikipedia-Abschnitt zu lesen, der dem HTTP-Protokoll entspricht, das Ihnen hilft, das Wissen zu festigen.
Ein dritter Teil des Leitfadens fehlt, in dem wir uns ausführlich mit den HTTP-Dialogen (Request-Response) befassen und zeigen werden, wie alles, was bisher besprochen wurde, zutrifft.
HTTP-Protokoll-Workshop für Entwickler (Teil II)
Um das Wissen zu vertiefen und praktische Anwendungen zu sehen (hauptsächlich mit PHP-Code) , schlagen wir den folgenden Workshop vor, um die Übungsaufgabe zu erleichtern.
Code, mit dem wir dem Antwortheader des Servers eine Zeile hinzufügen können.
Wir haben diesen Code bereits im Workshop des ersten Teils vorgeschlagen, aber jetzt, da wir die Antwortcodes der 3xx-Serie kennen (Umleitung), werden wir besser verstehen, was der vorgeschlagene Code bewirkt:
<?php header ('HTTP/1.1 301 Moved Permanently'); header ('Location: http://www.google.es'); ?>
Wir können sehen, dass es den Statuscode 301 sendet, um eine permanente Weiterleitung zur Seite Google.es einzurichten
Code zum Arbeiten mit der Abfrage einer URL (wenn Sie sich nicht erinnern, was die Abfrage ist, können Sie sie in Teil I des Handbuchs lesen, hier warte ich auf Sie) und das Verb GET.
Der Code nimmt die Vor- und Nachnamenvariablen durch die URL-Abfrage und arbeitet mit ihnen auf PHP-Ebene.
<?php //Definimos el salto de linea HTML para mostrar los datos en el navegador $salto_de_linea_html = "</br>"; //Trabajamos con la variable nombre obtenida a traves de la query con el método GET if ( isset($_GET["nombre"]) ) { $nombre = $_GET["nombre"]; echo "Nombre: " . $nombre . $salto_de_linea_html; } else { echo "No esta especificada la variable nombre en la URL" . $salto_de_linea_html ; } //Trabajamos con la variable apellido obtenida a traves de la query con el método GET if ( isset($_GET["apellido"]) ) { $apellido = $_GET["apellido"]; echo "Apellido: " . $apellido . $salto_de_linea_html; } else { echo "No esta especificada la variable apellido en la URL" . $salto_de_linea_html; } ?>
Wir können die folgenden Abfragen mit dem Code versuchen:
http: //localhost/test.php? Vorname = Juan & Nachname = Rodriguez
http: //localhost/test.php? nachname = Rodriguez
http: //localhost/test.php? name = Juan
http: //localhost/test.php? vorname und nachname
Wie immer ermutige ich Sie, Kommentare oder Zweifel zu hinterlassen, ich werde sie gerne beantworten.