Quelle est l'utilité des méthodes de requête HTTP PUT et DELETE?

j'ai lu beaucoup de choses à ce sujet, mais je n'ai pas pu obtenir la conclusion sur ce sujet.

mais je n'ai jamais utilisé les méthodes de requête HTTP PUT ou DELETE. Ma tendance est D'utiliser GET quand stat du système (mon application ou site web) peut ne pas être affecté(comme la liste de produits) et d'Utiliser POST quand il est affecté (ordre placé). N'est-ce pas suffisant ou est-ce que je manque quelque chose ?

73
demandé sur RAS 2012-08-27 17:11:37

2 réponses

SUPPRIMER un est pour la suppression de la demande de ressources:

la méthode de suppression demande que le serveur d'origine supprime la ressource identifiée par L'URI de la requête. Cette méthode peut être annulée par une intervention humaine (ou par d'autres moyens) sur le serveur d'origine. Le client ne peut pas être garanti que l'opération a été effectuée, même si le code d'état retourné par le serveur d'origine indique que l'action a été complétée avec succès ...

PUT est pour mettre ou mettre à jour une ressource sur le serveur:

la méthode PUT demande que l'entité contenue soit stockée dans l'URI-requête fourni. Si L'URI-requête fait référence à une ressource déjà existante, l'entité jointe doit être considérée comme une version modifiée de celle qui se trouve sur le serveur d'origine. Si L'URI-requête ne renvoie pas à une ressource existante, et que L'URI peut être défini comme une nouvelle ressource par l'agent utilisateur demandeur, le serveur d'origine peut créer la ressource avec cette URI ...

pour la visite complète de la spécification:

étant donné que les navigateurs actuels ne prennent malheureusement pas en charge d'autres verbes que POST et GET in HTML forms , vous ne pouvez généralement pas utiliser HTTP dans la mesure où il est avec eux (vous pouvez toujours détourner leur soumission via JavaScript cependant). L'absence de support pour ces méthodes dans les formes HTML a conduit à des URIs contenant des verbes, comme par exemple

POST http://example.com/order/1/delete

ou pire encore

POST http://example.com/deleteOrder/id/1

effectivement tunneling CRUD sémantique sur HTTP. Mais les verbes n'ont jamais été faits pour faire partie de L'URI. Au lieu de cela, HTTP fournit déjà le mécanisme et la sémantique pour CRUD une ressource (par exemple un ordre) à travers le Les méthodes HTTP. HTTP est un protocole et pas seulement un service de tunnel de données.

donc pour supprimer une ressource sur le serveur web, vous appelleriez

DELETE http://example.com/order/1

et pour le mettre à jour vous appelleriez

PUT http://example.com/order/1

et fournir la représentation de Ressource mise à jour dans le corps de PUT pour le webserver à appliquer alors.

donc, si vous construisez une sorte de client pour une API REST , vous aurez probablement faites-le envoyer des requêtes PUT et DELETE. Il peut s'agir d'un client construit à l'intérieur d'un navigateur, par exemple en envoyant des requêtes via JavaScript ou d'un outil tournant sur un serveur, etc.

pour plus de détails visitez:

76
répondu Gordon 2017-05-23 12:34:33

utilisant un verbe de requête HTTP tel que GET, POST, DELETE, PUT, etc... vous permet de construire des applications Web reposantes. Lisez à ce sujet ici: http://en.wikipedia.org/wiki/Representational_state_transfer

la façon la plus facile de voir les avantages de ceci est de regarder cet exemple. Chaque framework MVC a un Router/Dispatcher qui relie les URL-s à actionControllers. Ainsi URL comme ceci: /blog/article/1 invoquerait blogController::articleAction($id); Maintenant ce routeur est seulement conscient de L'URL ou /blog/article/1/

mais si ce routeur était au courant de tout L'objet de requête HTTP au lieu de seulement L'URL, il pourrait avoir accès au Verbe de requête HTTP (GET, POST, PUT, DELETE...), et bien d'autres choses utiles sur la requête HTTP actuelle.

qui vous permettrait de configurer l'application de manière à ce qu'elle accepte la même URL et l'associe à différents controllers d'action en fonction du verbe de requête HTTP.

par exemple:

si vous voulez retrive l'article 1, vous pouvez le faire:

GET /blog/article/1 HTTP/1.1

mais si vous voulez supprimer l'article 1, vous le ferez:

DELETE /blog/article/1 HTTP/1.1

notez que les deux requêtes HTTP ont la même URI, /blog/article/1, la seule différence est le verbe HTTP Request. Et sur la base de ce verbe, votre routeur peut appeler différents actionController. Cela vous permet de construire des URL-s soignées.

lisez ces deux articles, ils pourraient vous aider:

Symfony 2 - HTTP Fundamentals

Symfony 2-Routing

ces articles concernent le framework Symfony 2, mais ils peuvent vous aider à comprendre comment fonctionnent les requêtes HTTP et les réponses.

Espérons que cette aide!

22
répondu Limeni 2016-06-28 07:38:56