webentwicklung-frage-antwort-db.com.de

PUT und DELETE des HTTP-Protokolls und ihre Verwendung in PHP

Einführung

Ich habe folgendes gelesen:

Das Hypertext Transfer Protocol (HTTP) ist das Leben des Webs. Es wird jedes Mal verwendet, wenn Sie ein Dokument übertragen oder eine AJAX -Anforderung stellen. Aber HTTP ist unter einigen Webentwicklern überraschenderweise ein relativ unbekannter Wert.

Die HTTP-Verben machen einen Großteil unserer Einschränkung der „einheitlichen Schnittstelle“ aus und bieten uns das Aktionsgegenstück zur auf Substantiven basierenden Ressource. Die primären oder am häufigsten verwendeten HTTP-Verben (oder Methoden, wie sie ordnungsgemäß aufgerufen werden) sind POST, GET, PUT und LÖSCHE .

Huh?

Nun, wir kamen zu dem Punkt, an dem ich den Überblick verlor.

PUT und DELETE, heißt es. Ich habe bisher nur von POST und GET gehört und noch nie so etwas wie $_PUT Oder $_DELETE In einem Code von PHP I 'gesehen. habe schon mal gesehen.

Meine Frage

Was sind diese Methoden (PUT) und (DELETE) für und wenn es möglich ist, sie in PHP zu verwenden, wie würde ich das machen.

Anmerkung: Ich weiß, dass dies kein wirkliches Problem ist, aber ich ergreife immer eine Lernmöglichkeit, wenn ich eine sehe, und würde sehr gerne lernen, diese Methoden in PHP zu verwenden, wenn dies möglich ist.

53
user4446130

Was sind diese Methoden (PUT) und (DELETE) für ...

Es gibt eine Menge Worte, um dies zu erklären, und ich bin nicht geschickt genug, um es zu tun, aber wie bereits geschrieben, eine kurze Zusammenfassung dessen, was die HTTP-Spezifikation beschreibt.

Das Protokoll sagt im Grunde Folgendes aus:

  • verwenden Sie [~ # ~] get [~ # ~] , wenn Sie auf eine Ressource zugreifen und Daten abrufen möchten , und Sie müssen den Status dieser Daten nicht ändern.

  • verwenden Sie [~ # ~] post [~ # ~] , wenn Sie einige Daten senden möchten an den Server. Ex. aus einem Formular, um diese Daten irgendwo zu speichern.

  • verwenden Sie [~ # ~] head [~ # ~] , um auf eine Ressource zuzugreifen und nur die Header aus der Antwort abzurufen , ohne Ressourcendaten.

  • verwenden Sie [~ # ~] put [~ # ~] , wenn Sie den Status einiger bereits vorhandener Daten ersetzen möchten auf diesem System.

  • verwenden Sie [~ # ~] delete [~ # ~] , wenn Sie eine Ressource löschen möchten (relativ zu der von Ihnen gesendeten URI) auf diesem System.

  • verwenden Sie [~ # ~] options [~ # ~] , wenn Sie die Kommunikationsoptionen von einer Ressource abrufen möchten, und überprüfen Sie die zulässigen Methoden für diese Ressource . Ex. Wir verwenden es für CORS-Anforderungs- und Berechtigungsregeln.

  • Sie können die verbleibenden zwei Methoden in diesem Dokument nachlesen. Es tut mir leid, dass ich sie noch nie verwendet habe.

Grundsätzlich ist ein Protokoll ein Satz von Regeln, die Sie aus Ihrer Anwendung verwenden sollten, um es einzuhalten.


... und wenn es möglich ist, sie in PHP zu verwenden, wie würde ich dabei vorgehen.

Aus Ihrer Anwendung sollten Sie abrufen, welche Methode mit $_SERVER['REQUEST_METHOD'] Verwendet wurde und entsprechend reagieren.

Einige Anwendungen, die sich mit Browsern befassen, die die Methoden PUT oder DELETE nicht unterstützen, verwenden diesen Trick, ein verstecktes Feld aus dem HTML-Code mit dem Wert Bsp .:

<input name="_method" type="hidden" value="delete" />

In der Anwendung können Sie dies nun als DELETE-Anforderung erkennen.


Befolgen Sie eine einfache Beschreibung, wie PHP behandelt die Parameter:

Wenn Sie (Ihr Browser, Ihr Client) eine Ressource an einen HTTP-Server anfordern, müssen Sie eine der vom Protokoll (HTTP) akzeptierten Methoden verwenden. Sie müssen also bestehen:

  • EINE METHODE
  • Ein Uri der Ressource
  • Anforderungsheader wie User-Agent, Host, Content-Length usw
  • (Optionaler Text der Anfrage)

so sollte eine Anfrage aussehen:

GET /something/index.php?maybe=aparameter

Nun, in Ihrer Anwendung, PHP) nehmen Sie die Parameter aus dieser GET-Anfrage und fügen Sie sie in ein superglobales (für Ihre Anwendung zugängliches) Array ein. So können Sie auf $_GET['maybe'] Zugreifen, das ' aparameter`.

Im Falle einer POST Anfrage fragen Sie den HTTP-Server nach der Ressource auf ähnliche Weise, jedoch mit einem wichtigen Unterschied. Sie geben die Daten im Hauptteil der Anfrage an:

POST /something/index.php

(body) maybe=aparameter

Nun, in Ihrer Anwendung, PHP von dieser POST) Anfrage nehmen Sie die Parameter und fügen Sie sie in ein superglobales (zugänglich über Ihre Anwendung) Array. So können Sie zugreifen $_POST['maybe'], Das "aparameter" zurückgibt.

Bitte achten Sie auch sehr auf den Antwortstatuscode (zum Beispiel, wenn Sie eine PUT-Anfrage erhalten haben und diese Ressource fehlerfrei aktualisiert haben, sollten Sie einen 204-Status -No content- zurückgeben) .

46
ilpaijin

So verwenden Sie PUT-Daten aus PHP:

$method = $_SERVER['REQUEST_METHOD'];
if ('PUT' === $method) {
    parse_str(file_get_contents('php://input'), $_PUT);
    var_dump($_PUT); //$_PUT contains put fields 
}
29
AndreyP

PHP's $_GET und $_POST sind schlecht benannt. $_GET wird verwendet, um auf die Werte von Abfragezeichenfolgenparametern zuzugreifen, und $_POST ermöglicht den Zugriff auf den Anforderungshauptteil.

Die Verwendung von Abfragezeichenfolgenparametern ist nicht auf GET-Anforderungen beschränkt, und andere Arten von Anforderungen als nur POST können mit einem Anforderungshauptteil geliefert werden.

Wenn Sie das Verb herausfinden möchten, mit dem die Seite angefordert wurde, verwenden Sie $_SERVER['REQUEST_METHOD'].

12
CodeCaster

Der am besten geeignete Ort, um diese (PUT- und DELETE-) Methoden zu verwenden, ist REST API. Wo wir http-Methoden verwenden, um den Betriebsmodus zu definieren, möchten Sie beispielsweise Ressourcen abrufen, können Sie Folgendes verwenden:

GET http://api.example.com/employee/<any_id>

um einen neuen Artikel hinzuzufügen:

POST http://api.example.com/employee/

zu aktualisieren oder zu bearbeiten:

PUT http://api.example.com/employee/

so löschen Sie eine vorhandene Ressource:

DELETE http://api.example.com/employee/1

etc.

Auf der Seite von PHP müssen Sie nur lesen, welche HTTP -Methode verwendet wurde, damit Sie eine entsprechende Aktion ausführen können.

Es gibt viele Bibliotheken, die das für Sie tun können.

10
Ashish Awasthi

Was sind diese Methoden (PUT) und (DELETE)

Es gibt beschrieben in der HTTP-Spezifikation .

Kurz gesagt, dient PUT zum Hochladen einer Datei in eine URL und DELETE zum Löschen einer Datei aus einer URL.

habe noch nie etwas wie $_PUT oder $_DELETE gesehen, das in einem PHP Code vorbeigegangen ist, den ich je gesehen habe

$_POST Und $_GET Heißen schrecklich superglobal. $_POST Steht für Daten, die aus dem Anforderungshauptteil analysiert wurden. $_GET Steht für Daten, die aus der URL analysiert wurden. Es gibt nichts, was Daten an diesen Orten (insbesondere die URL) streng mit einer bestimmten Anforderungsmethode verknüpft.

DELETE-Anfragen kümmern sich nur um den URL-Pfad, sodass keine Daten zum Parsen vorhanden sind.

PUT-Anfragen betreffen normalerweise den gesamten Anfragetext (keine analysierte Version davon), auf den Sie mit file_get_contents('php://input'); zugreifen würden.

für und wenn es möglich ist, sie in PHP zu verwenden, wie würde ich dabei vorgehen.

Sie müssten die URL einem PHP Skript zuordnen (zB mit RL rewriting ), testen Sie die Anforderungsmethode , trainieren Sie mit welcher URL Sie tatsächlich zu tun hatten , und schreiben Sie dann Code, um die entsprechende Aktion auszuführen.

9
Quentin