Pourquoi y compris un verbe d'action dans l'URI dans une implémentation REST violera le protocole?

StackOverflow https://stackoverflow.com/questions/2173721

  •  24-09-2019
  •  | 
  •  

Question

Je trouve qu'il est nécessaire de comprendre pourquoi y compris les verbes d'action dans l'URI constitue une violation du protocole REST pour la syntaxe URI? Quand je lis l'article suivant, je sens que trop de gens font trop de bruit sur les verbes, et qu'ils devraient faire plus de bruit sur les types de contenu:

RestWiki: Méthodes minimum

Dans un monde parfait, les navigateurs clients seraient tous GET de soutien, POST, PUT et DELETE pour les opérations de demande. Cependant, seulement GET et POST sont pris en charge, ce qui signifie que nous sommes coincés essayer d'identifier les opérations qui doivent être PUT et DELETE en utilisant des verbes d'action communs dans l'URL comme point de vue, créer, modifier et supprimer.

Comment cela viole l'esprit du reste des principes architecturaux, et quel est le barrage routier que vous ressentez en mettant quelque chose comme « supprimer » dans votre URL au lieu d'utiliser « suppression »?

Était-ce utile?

La solution

La seule raison valable pour la direction autour URIs est d'encourager l'utilisation correcte des verbes REST. Si une demande effectue une action qui est conforme aux attentes du client selon les normes HTTP, alors il n'a pas d'importance ce que l'URL contient.

Attribution d'un nom urls basé sur les noms fait naturel de créer un comportement conforme à la destination de GET, PUT, POST et DELETE.

Lorsque vous mettez des verbes dans l'URL, il peut devenir très déroutant parce que souvent le verbe http aura un comportement contradictoire à celui de l'URL. règles REST disent que vous devez respecter le verbe HTTP, mais généralement l'URL est plus descriptive il peut être trompeur.

Le fait que les navigateurs ne supportent qu'un sous-ensemble des verbes HTTP est pas vraiment pertinent, car même si vous avez accès à tous les verbes HTTP, vous devez toujours être en mesure de modéliser d'autres verbes, comme l'impression, fermer, confirmer, annuler.

Vous êtes tout à fait raison que les gens ont besoin de se concentrer de manière plus sur les types de contenu que la structure des URL quand on parle des implémentations de repos.

Rendre vos URL font référence à des noms ne sont pas une contrainte de repos, il est d'encourager les gens à tomber dans la fosse de succès.

Autres conseils

REST est pas un protocole, plutôt un style. A ce titre, vous êtes libre de faire quelque chose qui répond à vos besoins.

verbes HTTP sont préférés si possible, car elles font partie du protocole HTTP et en tant que tel standard. Il vous permet également d'utiliser des couches de sécurité et de mise en cache existantes sur un serveur Web standard, sans avoir à écrire de middleware sur mesure.

REST suggère que nous devrions adopter HTTP, et non ajouter des couches d'abstraction comme SOAP, RPC ou CORBA faire. Ajout de verbes supplémentaires, ou de les ajouter à l'URL pourrait être considérée comme une, quoique légère, abstraction.

Cependant, comme vous le mentionnez righly ce ne sont pas toujours pris en charge les navigateurs accross ou certaines versions de Flash. Par conséquent, il peut être nécessaire de les mettre dans l'URL dans le monde réel, si vous accesssing du côté client.

Vous devriez regarder attentivement si, comme il peut y avoir de graves problèmes de sécurité lors de l'exécution SUPPRIMER / PUT sur une URL.

Je suggère que les verbes GET PUT POST et DELETE sont adaptés à pratiquement tous les besoins. Vous ne devriez pas besoin de nouveaux verbes ou des codes de réponse, car ceux-ci sont destinés à être générique. Ajouter plus d'informations dans les données de requête et de réponse.

Vérifiez ce SO article pour plus d'informations: Comprendre REST: Verbs, codes d'erreur et l'authentification

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top