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.