4 votes

Comment répondre à une autre URI dans un service web RESTful ?

Je construis un service web RESTful qui a plusieurs URI pour l'une de ses ressources, car il y a plus d'un identifiant unique. Le serveur doit-il répondre à une requête GET pour un autre URI en renvoyant la ressource, ou dois-je envoyer une redirection HTTP 3xx vers l'URI canonique ? Est-ce que HTTP 303 (voir aussi) la redirection la plus appropriée ?

Clarification : la spécification HTTP indique clairement que le choix de la redirection dépend de l'URI que les futures requêtes doivent utiliser. Dans mon application, l'URI "canonique" est la plus stable des alternatives ; un URI alternatif mènera toujours au même URI canonique, ou deviendra invalide.

4voto

Ubiguchi Points 2145

Personnellement, je préférerais renvoyer la ressource plutôt que de m'embêter avec une redirection, mais je soupçonne que c'est uniquement parce que mon subconscient me dit que les redirections sont plus lentes.

Cependant, si vous deviez décider d'utiliser une redirection, je pense qu'une 302 ou une 307 serait plus appropriée qu'une 303, bien que l'option de redirection de l'utilisateur ne soit pas disponible. w3.org contient les détails des différents codes de redirection que vous pouvez utiliser.

2voto

Nicholas Points 1730

Dans le cadre de l'initiative du W3C L'architecture du World Wide Web, Volume 1 il y a une section sur les alias d'URI ( Section 2.3.1 ) qui stipule ce qui suit :

"Lorsqu'un alias d'URI devient monnaie courante, le propriétaire de l'URI doit utiliser des techniques de protocole telles que les redirections côté serveur pour mettre en relation les deux ressources. La communauté est gagnante lorsque le propriétaire de l'URI prend en charge la redirection d'un URI aliasé vers l'URI "officiel" correspondant. Pour plus d'informations sur la redirection, voir la section 10.3, Redirection, dans le document suivant RFC2616 . Voir aussi CHIPS pour une discussion sur les meilleures pratiques pour les administrateurs de serveurs."

Pour ce que ça vaut, je recommande une redirection 302.

1voto

Peter Hilton Points 10580

La réponse d'Ubiguchi contenait ce dont j'avais besoin, sauf que je pense maintenant qu'une redirection est la meilleure solution, grâce au lien vers la section de la spécification HTTP 1.1 sur les codes de réponse. Il s'avère que j'ai en fait besoin d'une redirection 301 car l'URI vers lequel je redirige est plus "correct" et stable, et devrait donc être utilisé pour les futures requêtes.

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