37 votes

Y a-t-il une raison de ne pas utiliser HTTP PUT et DELETE dans une application web ?

En regardant autour de moi, je ne peux pas nommer une seule application web (pas un service web) qui utilise autre chose que des requêtes GET et POST. Y a-t-il une raison spécifique à cela ? Certains navigateurs (ou serveurs) ne supportent-ils pas d'autres types de requêtes ? Ou est-ce seulement pour des raisons historiques ? J'aimerais utiliser les requêtes PUT et DELETE pour me faciliter un peu la vie du côté serveur, mais je suis réticent à le faire parce que personne d'autre ne le fait.

39voto

ars Points 35803

En fait, un grand nombre de personnes utilisent PUT et DELETE, principalement pour les API autres que celles des navigateurs. Le protocole de publication Atom et les API de données de Google en sont des exemples :

Au-delà de cela, vous ne voyez pas PUT/DELETE dans l'usage courant parce que la plupart des navigateurs ne supportent pas PUT et DELETE à travers les formulaires. HTML5 semble être en train de régler ce problème :

La façon dont cela fonctionne pour les applications de navigateur est la suivante : les gens conçoivent des applications RESTful avec PUT et DELETE à l'esprit, puis "tunnelise" ces demandes par des POST du navigateur. Par exemple, voir cette question de l'OS sur la façon dont Ruby on Rails accomplit cela en utilisant des champs cachés :

Vous ne seriez donc pas seul à concevoir votre application en tenant compte de l'ensemble des verbes HTTP.

EDIT : Au fait, si vous êtes curieux de savoir pourquoi les fonctions PUT/DELETE sont absentes des formulaires de publication basés sur un navigateur, il s'avère qu'il n'y a pas de raison technique valable. La lecture de ce fil de discussion sur la liste de diffusion rest-discuss, en particulier les commentaires de Roy Fielding, est intéressante pour connaître le contexte :

EDIT : Il y a quelques commentaires sur le fait que les bibliothèques AJAX supportent toutes les méthodes. Cela dépend de l'implémentation de XMLHttpRequest par le navigateur. J'ai pensé que quelqu'un pourrait trouver ce lien pratique, qui teste votre navigateur pour voir dans quelle mesure l'objet HttpRequest est compatible avec diverses options HTTP.

Malheureusement, je ne connais pas de référence qui recueille ces résultats.

9voto

Gareth Points 42402

Tout simplement, le HTML 4.01 form élément n'autorise que les valeurs " POST " et " GET " dans son method attribut

3voto

yanchenko Points 24142

Certains serveurs proxy ayant des politiques de sécurité strictes pourraient les laisser tomber. J'utilise de toute façon PUT et DELETE.

3voto

fields Points 708

J'ai lu que certains navigateurs ne prennent pas correctement en charge les autres méthodes HTTP, mais je ne peux pas citer de cas précis.

Rails, en particulier, fournira à vos formulaires un paramètre de méthode permettant de définir explicitement ce paramètre, même si le navigateur ne prend pas en charge ces méthodes. Cela semble être une précaution raisonnable si vous voulez faire cela.

2voto

codemonkey Points 1756

Je dis qu'il faut utiliser toutes les fonctionnalités de HTTP, sans se soucier des navigateurs, lol. Peut-être que cela inspirera une utilisation plus complète et plus correcte du protocole HTTP à l'avenir. Il se passe plus de choses sur le net que de simples POST et GET. Il était temps que les implémentations des navigateurs reflètent cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X