Est-il judicieux d'utiliser des ancres internes pour filtrer une représentation API REST?
-
23-09-2019 - |
Question
En suite à href="https://stackoverflow.com/questions/2543688/rest-api-design-to-retrieve-summary-information/"> sur REST URIs pour récupérer des informations statistiques pour une ressource forum web, je veux savoir s'il est possible d'utiliser les points d'ancrage internes conseils de filtre. Voir exemple ci-dessous:
a) Obtenez toutes les statistiques:
GET /group/5t7yu8i9io0op/stat
{
group_id: "5t7yu8i9io0op",
top_ranking_users: {
[ { user: "george", posts: 789, rank: 1 },
{ user: "joel", posts: 560, rank: 2 } ...]
},
popular_topics: {
[ ... ]
},
new_topics: {
[ ... ]
}
}
b) GET uniquement des sujets populaires
GET /group/5t7yu8i9io0op/stat#popular_topics
{
group_id: "5t7yu8i9io0op",
popular_topics: {
[ ... ]
}
}
c) Les utilisateurs obtiennent seulement haut rang
GET /group/5t7yu8i9io0op/stat#top_ranking_users
{
group_id: "5t7yu8i9io0op",
top_ranking_users: {
[ { user: "george", posts: 789, rank: 1 },
{ user: "joel", posts: 560, rank: 2 } ...]
}
}
Ou devrais-je utiliser les paramètres de la requête?
La solution
Je ne sais pas ce que vous essayez de faire exactement, mais assurez-vous de comprendre que les identifiants fragments ne sont pas vus par le serveur, ils sont tronqués par le connecteur client.
Autres conseils
Je ne l'ai jamais vu des ancres utilisés de cette façon - il est intéressant. Cela étant dit, je suggère d'utiliser des paramètres de requête pour deux raisons:
-
Ils sont standard - et les consommateurs de votre api seront à l'aise avec eux. Il n'y a rien de plus agaçant que le traitement avec un api bizarre.
-
De nombreux cadres seront automatiquement parser les paramètres de la requête et les mettre dans un dictionnaire sur l'objet de la demande (ou tout autre analogue existe dans votre cadre / http bibliothèque de serveur).
Je pense qu'il serait plus logique d'avoir:
/group/5t7yu8i9io0op/stat/top_users
/group/5t7yu8i9io0op/stat/popular_topics
/group/5t7yu8i9io0op/stat/new_topics
/group/5t7yu8i9io0op/stat/user/george
Non, vous ne pouvez pas le faire parce que Jan souligne le serveur ne verra jamais cet identifiant de fragment. Littéralement, cette partie de l'URL ne sera pas atteindre le serveur.