Le protocole HTTP est PUT et DELETE et leur utilisation en PHP
Introduction
J'ai lu les suivantes:
Protocole de Transfert hypertexte (HTTP) est la durée de vie du web. Il est utilisé chaque fois que vous transférez un document, ou de faire une requête AJAX. Mais HTTP est étonnamment un inconnu chez certains développeurs web.
Les verbes HTTP comportent une partie importante de notre “uniforme” d'interface de contrainte et de nous donner de l'action de contrepartie pour le nom de la base de ressources. La principale ou la plus couramment utilisée verbes HTTP (ou des méthodes, car ils sont proprement dite) sont POST, GET, METTRE, et SUPPRIMER.
Hein?
Bien, nous en sommes venus au point j'ai perdu la trace des choses.
PUT
et DELETE
, disent-ils. Je n'ai jamais entendu parler de POST
et GET
et n'a jamais vu quelque chose comme $_PUT
ou $_DELETE
passage dans le code PHP que j'ai jamais vu.
Ma question
Quelles sont ces méthodes (MIS) et (SUPPRIMER) et si c'est possible de les utiliser en PHP, comment pourrais-je aller à ce sujet.
Remarque: je sais que ce n'est pas vraiment un problème, mais j'ai toujours saisir une occasion d'apprentissage si j'en vois un et aimerais beaucoup apprendre à utiliser ces méthodes en PHP si c'est possible.
- (Question intéressante. Aparté: si vous postez dans un fragment d'un site web ou un livre, il aide à le citer, pour montrer que c'est pas votre texte, mais de quelqu'un d'autre. Cela ajoute un contexte qui rend une question plus lisible).
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de mots pour passer à l'expliquer, et je ne suis pas assez habile pour le faire, mais comme déjà signalé, un bref récapitulatif de ce que l' Spécification HTTP décrit.
Le protocole dit en gros ceci:
utilisation OBTENIR lorsque vous avez besoin de accéder à une ressource et de récupérer des données, et vous n'avez pas à modifier ou altérer l'état de ces données.
utilisation POST lorsque vous avez besoin de envoyer des données pour le serveur. Ex. à partir d'un formulaire pour enregistrer ces données quelque part.
utilisation TÊTE lorsque vous avez besoin de accéder à une ressource et de récupérer uniquement les en-Têtes de la réponse, sans aucune ressource de données.
utilisation METTRE lorsque vous avez besoin de remplacer l'état de certaines données déjà existantes sur ce système.
utilisation SUPPRIMER lorsque vous avez besoin de supprimer une ressource (par rapport à l'URI que vous avez envoyés) sur ce système.
utilisation OPTIONS lorsque vous avez besoin pour obtenir les options de communication à partir d'une ressource, donc pour la vérification des méthodes autorisées pour cette ressource. Ex. nous l'utilisons pour la SCRO demande et les autorisations de règles.
Fondamentalement, un protocole est un ensemble de règles que vous devez utiliser à partir de votre application pour qu'elles y adhèrent.
À partir de votre application, vous devez récupérer la méthode qui a été utilisée avec
$_SERVER['REQUEST_METHOD']
et de réagir en conséquence.Certaines applications traitant avec les navigateurs qui ne supportent pas les METTRE ou SUPPRIMER des méthodes d'utilisation de ce truc, un champ caché du html, avec la valeur de ex.:
Donc, à partir de l'application que vous êtes maintenant capable de reconnaître cela comme une demande de SUPPRESSION.
Suivent une simple description de la façon dont PHP gère les paramètres:
Lorsque vous (votre navigateur, votre client) demande une ressource à un serveur HTTP, vous devez utiliser l'un de la méthode que le protocole (HTTP) accepter. Si vous avez besoin de passer:
ainsi, une requête devrait ressembler à:
Maintenant, à l'intérieur de l'application, PHP prendre les paramètres de cette demande et de les insérer dans une superglobale (accessible allover votre demande) tableau. Vous pouvez donc accéder à
$_GET['maybe']
qui renvoie 'aparameter`.Dans le cas d'une requête POST vous demander de la ressource sur le serveur HTTP de manière similaire, mais avec une différence importante. Vous fournir les données à l'intérieur du corps de la demande:
Maintenant, à l'intérieur de l'application, PHP à partir de ce POSTE demande de prendre les paramètres et de les insérer dans une superglobale (accessible allover votre demande) tableau. Vous pouvez donc accéder à
$_POST['maybe']
qui renvoie 'aparameter`.Veuillez faire très attention au Code d'État de Réponse trop (ex. si vous avez reçu une demande et que vous avez mis à jour la ressource sans erreur, il faut retourner a 204 état -Pas de contenu).
Façon d'utiliser METTRE les données à partir de PHP:
PHP
$_GET
et$_POST
sont mal nommée.$_GET
est utilisé pour accéder aux valeurs des paramètres de chaîne de requête, et$_POST
vous permet d'accéder à la demande du corps.À l'aide de paramètres de chaîne de requête n'est pas limité à des demandes, et d'autres types de demandes que juste après, peut venir avec un corps de requête.
Si vous voulez trouver le verbe employé à la demande de la page, utilisez
$_SERVER['REQUEST_METHOD']
.Plus adéquat pour l'utilisation de ces (PUT et DELETE) méthodes de l'API REST. Lorsque nous utilisons des méthodes http pour définir le mode de fonctionnement par exemple, vous voulez récupérer toutes les ressources alors vous pouvez utiliser la suite:
pour ajouter un nouvel élément:
de mettre à Jour ou de Modifier:
pour Supprimer une ressource existante:
etc.
Maintenant sur
PHP
côté, vous avez juste besoin de lire ce queHTTP
méthode utilisée, de sorte que vous pouvez faire une action en fonction de cela.Il y a beaucoup de bibliothèques disponibles qui peuvent le faire pour vous.
Il y a décrit dans la spécification HTTP.
En un mot, et en simplifiant quelque peu,
PUT
est de téléchargement d'un fichier vers une URL etDELETE
est pour la suppression d'un fichier à partir d'une URL.$_POST
et$_GET
sont terriblement nommé superglobales.$_POST
est pour les données analysées à partir du corps de la requête.$_GET
est pour les données analysées à partir de l'URL. Il n'y a rien que strictement liens de données dans l'autre de ces endroits (en particulier l'URL) d'une demande particulière de la méthode.SUPPRIMER uniquement les requêtes de soins sur le chemin d'URL, donc il n'y a pas de données à analyser.
Demandes PUT habituellement des soins sur l'ensemble du corps de la requête (pas une version analysée de celui-ci) qui vous permettrait d'accéder à
file_get_contents('php://input');
.Vous auriez besoin de la carte de l'URL sur un script PHP (par exemple avec La réécriture d'URL), test de la méthode de la requête, travail que l'URL qui vous ont fait affaire avec, puis d'écrire un code pour effectuer l'action appropriée.