L'URL indique la ressource elle-même. Un « client » est une ressource qui peut être mise en pratique , devrait donc faire partie de l'URL de base: /orders/view/client/23
.
Les paramètres ne sont que cela, pour paramétrer l'accès à la ressource. Cela vient notamment en jeu avec les messages et les recherches: /orders/find?q=blahblah&sort=foo
. Il y a une ligne fine entre les paramètres et les sous-ressources: /orders/view/client/23/active versus /orders/view/client/23?show=active
. Je recommande le style de sous-ressource et les paramètres de réserve pour les recherches.
Étant donné que chaque point de terminaison représente un transfert d'état (pour modifier le mnémonique), les en-têtes personnalisés ne doivent être utilisés que pour les choses qui n'impliquent pas le nom de la ressource (l'url), l'état de la ressource (le corps) ou les paramètres directement affectant la ressource (paramètres). Cela laisse de vraies métadonnées sur la demande d'en-têtes personnalisés.
HTTP a une très large sélection d'en-têtes qui couvrent presque tout ce dont vous aurez besoin. Là où j'ai vu des en-têtes personnalisés apparaître, c'est dans une requête système à système fonctionnant au nom d'un utilisateur. Le système proxy validera l'utilisateur et ajoutera " X-User: userid
" aux en-têtes et utilisera les informations d'identification du système pour atteindre le point final. Le système de réception valide que les informations d'identification du système sont autorisées à agir au nom de l'utilisateur, puis valide que l'utilisateur est autorisé à effectuer l'action.
Les en-têtes personnalisés présentent les avantages suivants:
la source
Je n'utiliserais un en-tête personnalisé que lorsqu'il n'y a pas d'autre moyen de transmettre des informations par standard ou par convention. Darren102 explique la manière typique de transmettre cette valeur. Votre API sera beaucoup plus conviviale en utilisant des versets de modèles typiques utilisant des en-têtes personnalisés, ce qui ne veut pas dire que vous n'aurez pas de cas pour les utiliser, mais qu'ils devraient être le dernier recours et quelque chose qui n'est pas déjà géré par la spécification HTTP.
la source
Authentification: GUID, authentification de base, jetons personnalisés, etc., par exemple, authentification de base avec un jeton Guid pour l'API REST au lieu du nom d'utilisateur / mot de passe
Si vous êtes impliqué dans la transmission de jetons ou d'autres informations de type authentification entre des domaines couverts par PCI-DSS ou d'autres règles de sécurité, vous devrez peut-être également enterrer des paramètres car certaines réglementations exigent explicitement que les éléments d'authentification restent en dehors des URL qui pourraient être relues de manière triviale (à partir de historiques du navigateur, journaux de proxy, etc.).
la source
Il n'y a pas de norme pour REST mais la méthode acceptée serait
Ne pas utiliser les en-têtes personnalisés et, par conséquent, la vue 23 après suppose être l'id, vous auriez donc une fonction qui prend l'id et donc produit uniquement cette information.
la source
Je n'utiliserais pas d'en-têtes personnalisés car vous ne savez pas si des mandataires les transmettront. L'URL est la voie à suivre.
la source
Certainement OK:
Aussi correct:
Je pense que ce serait OK aussi:
la source
Vous pouvez utiliser des en-têtes personnalisés pour inclure plus d'informations sur une demande partiellement traitée, étant donné que l' enveloppe n'est pas une bonne pratique. Les en-têtes sont sécurisés .
la source