2008-08-23 10 views
13

Quel est l'ensemble minimal de verbes HTTP qu'un serveur doit autoriser pour qu'un service Web soit classé comme RESTful?Services Web RESTful et verbes HTTP

Que faire si mon hébergeur ne permet pas PUT et SUPPRIMER?

Est-ce vraiment important puis-je vivre heureux pour toujours avec juste GET et POST?


Mise à jour: Merci pour les réponses des gens, Roger's answer était probablement mieux à cause du lien avec le projet de loi Venners et Elliotte Rusty Harold entrevue. Je comprends maintenant.


Répondre

20

Oui, vous pouvez vivre sans PUT et DELETE.

Cet article vous explique pourquoi: http://www.artima.com/lejava/articles/why_put_and_delete.html

Tout à vrai RESTafrians cela peut être l'hérésie, dans le monde réel que vous faites ce que vous pouvez, avec ce que vous avez. Être aussi rationnelle que possible et en cohérence avec votre propre convention que vous pouvez, mais vous pouvez construire sans aucun doute un bon système RESTful sans P et D.

rp

2

Si vous utilisez simplement GET et POST, c'est toujours RESTful. Votre service Web peut uniquement faire des choses qui ne nécessitent que GET ou POST, alors c'est bien.

1

navigateurs web d'aujourd'hui que la poignée GETS + POTEAUX. Dans Rails, par exemple, PUTS + DELETS sont "truqués" à l'aide de champs de formulaire masqués.

À moins que votre infrastructure n'ait une solution de contournement pour «prendre en charge» PUTS + DELETS, ne vous inquiétez pas pour eux maintenant.

3

Vous pouvez également utiliser X-Http-Verb-Override: DELETE inst. de HTTP DELETE. Ceci est également utile pour les clients Silverlight qui ne peuvent pas modifier les verbes HTTP et ne supportent que GET et POST ...

2

REST permet de rompre la convention de protocole si les implémentations du protocole sont cassées (de sorte que les seules choses non standard faire sont de contourner les parties cassées de la mise en œuvre). Il est donc permis dans REST d'utiliser une autre méthode pour représenter des verbes généralement non supportés comme DELETE ou PUT.

modifier: Voici une citation de Fielding, qui est celui qui a créé et défini REST:

Une API REST ne doit pas contenir de modification des protocoles de communication en dehors de remplissage-out ou de fixer les détails de bits sous-spécifiés de protocoles standard, tels que la méthode PATCH de HTTP ou le champ d'en-tête Link. Les solutions de contournement pour les implémentations cassées (telles que ces navigateurs assez stupides pour croire que HTML définit l'ensemble de méthodes HTTP) doivent être définies séparément, ou au moins dans les annexes, en espérant que la solution de contournement sera finalement obsolète. [L'échec ici implique que les interfaces de ressources sont spécifiques à l'objet, pas génériques.]

+0

À partir de ce POV, tous les navigateurs Web sont endommagés. Mais qui a dit que par "clients REST" nous entendons un navigateur web? –

+0

Vous manquez mon point. Je n'ai même pas mentionné les navigateurs. Mais de toute façon, vous devriez toujours permettre une utilisation correcte avec PUT et DELETE et ainsi de suite (si votre service d'hébergement le permet), ainsi qu'une sorte de solution de contournement pour les clients "cassés". – aehlke

Questions connexes