J'ai lu ce qui suit:
Le protocole HTTP (Hypertext Transfer Protocol) est la vie du Web. Il est utilisé chaque fois que vous transférez un document, ou effectuez une demande AJAX. Mais, étonnamment, HTTP est relativement inconnu chez certains développeurs Web.
Les verbes HTTP constituent une partie importante de notre contrainte "interface uniforme" et nous fournissent la contrepartie d'action de la ressource nominale. Les verbes HTTP principaux ou les plus couramment utilisés (ou méthodes, comme ils sont correctement appelés) sont POST, GET, PUT , et SUPPRIMER .
Eh bien, nous sommes arrivés au point où j'ai perdu la trace de choses.
PUT
et DELETE
, disent-ils. J'ai seulement entendu parler de POST
et GET
et je n'ai jamais vu quelque chose comme $_PUT
ou $_DELETE
_ en passant par n'importe quel PHP que j'ai jamais vu.
A quoi servent ces méthodes (PUT) et (DELETE) et s'il est possible de les utiliser en PHP, comment procéder?.
Note: Je sais que ce n'est pas vraiment un problème mais je saisis toujours une opportunité d'apprentissage si j'en vois une et aimerais beaucoup apprendre à utiliser ces méthodes dans PHP si c'est possible.
Quelles sont ces méthodes (PUT) et (DELETE) pour ...
Il y a beaucoup de mots à dépenser pour expliquer cela, et je ne suis pas assez habile pour le faire, mais comme déjà posté, un bref récapitulatif de ce que spécification HTTP décrit.
Le protocole dit essentiellement ceci:
utilisez [~ # ~] obtenez [~ # ~] lorsque vous avez besoin d'accéder à une ressource et d'extraire des données , et vous n'avez pas à modifier ou à modifier l'état de ces données.
utilisez [~ # ~] post [~ # ~] lorsque vous avez besoin d'envoyer des données sur le serveur. Ex. à partir d'un formulaire pour enregistrer ces données quelque part.
utilisez [~ # ~] head [~ # ~] lorsque vous avez besoin d'accéder à une ressource et d'extraire uniquement le En-têtes de la réponse , sans aucune donnée de ressource.
utiliser [~ # ~] mettre [~ # ~] lorsque vous avez besoin de déjà remplacer l'état de certaines données existant sur ce système.
utiliser [~ # ~] supprimer [~ # ~] lorsque vous avez besoin supprimer une ressource (par rapport à l'URI que vous avez envoyé) sur ce système.
utilisez [~ # ~] options [~ # ~] lorsque vous avez besoin d'obtenir les options de communication d'une ressource, donc pour vérifiant les méthodes autorisées pour cette ressource . Ex. nous l'utilisons pour les requêtes CORS et les règles de permissions.
En gros, un protocole est un ensemble de règles que vous devez utiliser à partir de votre application pour y adhérer.
... et s'il est possible de les utiliser en PHP, comment pourrais-je m'y prendre?.
À partir de votre application, vous devez récupérer la méthode utilisée avec $_SERVER['REQUEST_METHOD']
et réagit en conséquence.
Certaines applications utilisant des navigateurs qui ne prennent pas en charge les méthodes PUT ou DELETE utilisent cette astuce, un champ caché du code HTML, avec la valeur ex .:
<input name="_method" type="hidden" value="delete" />
Donc, à partir de l'application, vous pouvez maintenant reconnaître cela comme une demande DELETE.
Lorsque vous (votre navigateur, votre client) demandez une ressource à un serveur HTTP, vous devez utiliser l'une des méthodes acceptées par le protocole (HTTP). Donc, vous devez passer:
une requête doit donc ressembler à:
GET /something/index.php?maybe=aparameter
Maintenant, dans votre application, PHP prenez les paramètres de cette requête GET et insérez-les dans un tableau superglobal (accessible dans l'ensemble de votre application). Vous pourrez ainsi accéder à $_GET['maybe']
qui retourne 'aparameter`.
Dans le cas d'une demande POST, vous demandez la ressource au serveur HTTP de la même manière mais avec une différence importante. Vous fournissez les données à l'intérieur du corps de la demande:
POST /something/index.php
(body) maybe=aparameter
Maintenant, dans votre application, PHP à partir de cette demande POST demandez les paramètres et insérez-les dans un tableau superglobal (accessible par l'ensemble de votre application). Vous pourrez ainsi accéder à $_POST['maybe']
qui retourne 'aparameter`.
Veuillez également faire très attention au code d'état de la réponse (par exemple, si vous avez reçu une demande PUT et que vous avez mis à jour cette ressource sans erreur, vous devez renvoyer un statut 204 -No content -) .
Manière d'utiliser les données PUT de PHP:
$method = $_SERVER['REQUEST_METHOD'];
if ('PUT' === $method) {
parse_str(file_get_contents('php://input'), $_PUT);
var_dump($_PUT); //$_PUT contains put fields
}
PHP's $_GET
et $_POST
sont mal nommés. $_GET
est utilisé pour accéder aux valeurs des paramètres de la chaîne de requête, et $_POST
vous permet d'accéder au corps de la demande.
L'utilisation de paramètres de chaîne de requête n'est pas limitée aux requêtes GET, et d'autres types de requêtes que simplement POST peuvent être accompagnées d'un corps de requête.
Si vous voulez connaître le verbe utilisé pour demander la page, utilisez $_SERVER['REQUEST_METHOD']
.
L'endroit le plus approprié pour utiliser ces méthodes (PUT et DELETE) est l'API REST). Lorsque nous utilisons des méthodes http pour définir le mode de fonctionnement, vous souhaitez par exemple extraire des ressources:
GET http://api.example.com/employee/<any_id>
pour ajouter un nouvel article:
POST http://api.example.com/employee/
mettre à jour ou modifier:
PUT http://api.example.com/employee/
supprimer une ressource existante:
DELETE http://api.example.com/employee/1
etc.
Maintenant, du côté PHP
, il vous suffit de lire la méthode utilisée par HTTP
pour pouvoir effectuer une action en conséquence.
Il y a beaucoup de bibliothèques disponibles qui peuvent le faire pour vous.
Quelles sont ces méthodes (PUT) et (DELETE)
Il y a décrit dans la spécification HTTP .
En un mot et pour simplifier quelque peu, PUT
sert à télécharger un fichier dans une URL et DELETE
à supprimer un fichier d'une URL.
jamais vu quelque chose comme
$_PUT
ou$_DELETE
en passant dans aucun PHP que j'ai jamais vu
$_POST
Et $_GET
Sont des superglobales terriblement nommées. $_POST
Concerne les données analysées à partir du corps de la demande. $_GET
Concerne les données analysées à partir de l'URL. Rien ne lie strictement les données de ces emplacements (notamment l'URL) à une méthode de demande particulière.
Les requêtes DELETE concernent uniquement le chemin de l'URL, il n'y a donc aucune donnée à analyser.
Les requêtes PUT concernent généralement tout le corps de la requête (et non une version analysée de celle-ci) auquel vous auriez accès avec file_get_contents('php://input');
.
pour et s'il est possible de les utiliser en PHP, comment pourrais-je m'y prendre.
Vous devez mapper l'URL sur un script PHP (par exemple, avec réécriture d'URL ), testez la méthode de la requête , résolvez - quelle URL vous utilisiez réellement , puis écrivez du code pour effectuer l'action appropriée.