Les Api REST: en-têtes HTTP personnalisés vs les paramètres d'URL
De le faire lorsque vous utilisez des en-têtes HTTP personnalisés à la demande de la partie d'une API REST ?
Exemple:
Avez-vous songé à utiliser
GET /orders/view
(custom HTTP header) CLIENT_ID: 23
au lieu de
GET /orders/view/client_id/23 or
GET /orders/view/?client_id=23
Vous devez vous connecter pour publier un commentaire.
L'URL indique que la ressource elle-même. Un "client" est une ressource qui peut être sollicité, il doit donc faire partie de l'url de base:
/orders/view/client/23
.Paramètres sont juste que, pour paramétrer l'accès à la ressource. Ce, en particulier, entre en jeu avec des poteaux et des recherches:
/orders/find?q=blahblah&sort=foo
. Il ya 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 sous-ressource de style et de la réserve de paramètres pour les recherches.Depuis chaque point de terminaison Représente un Transfert de l'État (à marquer le mnémonique), en-têtes personnalisés doivent être utilisées uniquement pour des choses qui n'impliquent pas le nom de la ressource (url), l'état de la ressource (le corps), ou des paramètres affectant directement la ressource (paramètres). Qui laisse vrai métadonnées à propos de la demande pour les en-têtes personnalisés.
HTTP a un très large choix d'en-têtes qui couvrent la plupart de tout ce dont vous aurez besoin. J'y ai vu des en-têtes personnalisés est dans un système à la demande du système d'exploitation pour le compte d'un utilisateur. Le proxy système permettra de valider l'utilisateur et d'ajouter "
X-User: userid
" pour les en-têtes et utiliser les informations d'identification du système à frapper le point de terminaison. Le système de réception permet de vérifier que les informations d'identification du système sont autorisés à agir au nom de l'utilisateur, puis valider que l'utilisateur est autorisé à effectuer l'action.Je ne utiliser un en-tête personnalisé quand il n'y a pas d'autre moyen de transmettre des informations par la norme ou de la convention. Darren102 est d'expliquer la manière typique de passer cette valeur. Votre Api sera beaucoup plus convivial en utilisant les modèles typiques verset à l'aide des en-têtes personnalisés.Ce n'est pas à dire que vous n'aurez pas le cas pour les utiliser, juste qu'ils devraient être le dernier recours, et quelque chose qui n'est pas géré par la spécification HTTP.
En-têtes personnalisés ont les avantages suivants:
Authentification: Guid, l'authentification de base, jetons personnalisés, etc. par exemple,
L'Authentification de base avec un Guid jeton pour le REPOS de l'api au lieu de nom d'utilisateur/mot de passe
Si vous vous impliquez dans le passage d'un jeton ou d'autres authentification de l'information entre les domaines couverts par la norme PCI-DSS ou d'autres règles de sécurité, vous pouvez également avoir à enterrer des paramètres, car certains règlements exigent explicitement éléments d'authentification de rester en dehors de l'Url qui pourrait être trivialement relus (à partir du navigateur des historiques, des journaux du proxy, etc.).
Il n'y a pas de norme pour les RESTE cependant la façon acceptée serait
Pas en utilisant les en-têtes personnalisés et donc le 23, après avis, suppose pour être l'id d'où vous avez une fonction qui prend le numéro d'identification et, par conséquent, ne produit que de l'information.
Je ne voudrais pas utiliser des en-têtes personnalisés que vous ne savez pas si tout les procurations profiter de ces sur. L'URL de base est le chemin à parcourir.
Certainement OK:
Aussi OK:
Je pense que ce serait OK, trop:
Vous pouvez utiliser des en-têtes personnalisés pour inclure plus d'informations sur un partiellement traitées demande en considérant que Enveloppant n'est pas une bonne pratique. Les en-têtes sont sécurisé.