¿Tiene sentido utilizar anclajes internos para filtrar una representación API REST?
-
23-09-2019 - |
Pregunta
Como continuación a mi anterior pregunta sobre el descanso URI para recuperar información estadística para un recurso foro de la web, que quieren saber si es posible utilizar los anclajes internos como pistas de filtro. Consulte el siguiente ejemplo:
a) Obtener todas las estadísticas:
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) obtener sólo los temas populares
GET /group/5t7yu8i9io0op/stat#popular_topics
{
group_id: "5t7yu8i9io0op",
popular_topics: {
[ ... ]
}
}
c) obtener sólo los mejores usuarios de clasificación
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 } ...]
}
}
O debería estar utilizando los parámetros de consulta?
Solución
No está seguro de lo que está tratando de hacer exactamente, pero asegúrese de que entiende que los identificadores de fragmentos no son vistos por el servidor, que están cortadas por el conector de cliente.
Otros consejos
nunca he visto anclajes se utiliza de esa manera - es interesante. Una vez dicho esto, me gustaría sugerir el uso de parámetros de consulta por un par de razones:
-
Son estándar - y los consumidores de su API se sentirán cómodos con ellos. No hay nada más molesto que tratar con un API peculiar.
-
Muchos marcos se auto-analizar los parámetros de consulta y las colocó en un diccionario en el objeto de la petición (o lo que sea análogo existe en la biblioteca de servidor de marco / http).
Creo que tendría más sentido tener:
/group/5t7yu8i9io0op/stat/top_users
/group/5t7yu8i9io0op/stat/popular_topics
/group/5t7yu8i9io0op/stat/new_topics
/group/5t7yu8i9io0op/stat/user/george
No se puede hacer eso, porque como Jan puntos sobre el servidor nunca verán que el identificador de fragmento. Literalmente, esa parte de la url no llegará al servidor.