44 votes

REST : En-têtes HTTP ou paramètres de requête

J'ai fait quelques recherches sur REST. J'ai remarqué que le Amazon S3 API utilise principalement des en-têtes http pour son interface REST. C'était une surprise pour moi, car je supposais que l'interface fonctionnerait principalement à partir des paramètres de la requête.

Ma question est la suivante : Dois-je développer mon interface REST en utilisant principalement les en-têtes http, ou dois-je utiliser des paramètres de requête ?

67voto

Aliostad Points 47792

La question est principalement si les paramètres définis font partie de l'identifiant de la ressource (URI) ou non. Si c'est le cas, vous utiliserez les paramètres de la requête, sinon les en-têtes HTTP personnalisés. Par exemple, le fait de passer l'identifiant du album dans une galerie de musique doit faire partie de l'URI.

Rappelez-vous, par exemple /employee/id/45 (Ou /employee?id=45 REST n'a pas de préjugé contre les paramètres de la chaîne de requête ou pour clean slash separated URIs) identifie une ressource. Vous pouvez maintenant utiliser la négociation de contenu en envoyant l'en-tête de la requête content-type: text/plain o content-type: image/jpg pour obtenir l'info ou l'image. À cet égard, la ressource est considérée comme identique et l'en-tête ne sert qu'à définir le format de la ressource.

En général, je ne suis pas un grand fan des en-têtes personnalisés HTTP. Cela suppose généralement que le client ait une connaissance préalable de la mise en œuvre du serveur (qui ne peut être découverte par des moyens HTTP naturels, c'est-à-dire par l'hypermédia), ce qui est toujours considéré comme un anti-modèle REST.

Les en-têtes HTTP définissent généralement des aspects de HTTP orthogonal à ce qui doit être réalisé dans le processus de demande/réponse. Authorization L'en-tête (un terme mal choisi, qui aurait dû être "authentification") est un exemple classique.

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