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.
Réponses
Trop de publicités?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.
Tout simplement, le HTML 4.01 form
élément n'autorise que les valeurs " POST
" et " GET
" dans son method
attribut
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.
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.