design - restful - Diseño de URL REST: múltiples recursos en una llamada HTTP
rest routes best practices (4)
Diría /resources/foo,bar,baz
(el separador puede variar según la naturaleza de las identificaciones y sus preferencias estéticas, " foo+bar+baz
", " foo:bar:baz
", etc.). Se ve un poco "semánticamente" más limpio que foo/bar/baz
("baz of bar of foo"?)
Si los ID de recursos son numéricos, tal vez, incluso con un atajo de rango como /resources/1,3,5-9,12
O bien, si necesita consultar exactamente los recursos con ID específicos, pero en grupos de recursos que tienen propiedades específicas, tal vez algo como /resources/state=complete/size>1GiB/!active/
...
Posible duplicado:
Rieles 3 Ruta personalizada que toma múltiples identificadores como parámetro
Por lo que entiendo, una buena URL REST para obtener un recurso se vería así:
/resource/{id}
El problema que tengo es que a menudo necesito obtener una gran cantidad de recursos al mismo tiempo y no quiero hacer una llamada HTTP por separado para cada uno de ellos.
¿Hay un diseño de URL ordenado que se adapte a eso o simplemente no es adecuado para una API REST?
En función de su respuesta, la respuesta a su pregunta es crear un nuevo recurso que contenga ese único conjunto de información. p.ej
GET /Customer/1212/RecentPurchases
La creación de URL compuestas que tienen muchos identificadores en una sola URL limita los beneficios de las memorias caché y agrega complejidad innecesaria al servidor y al cliente. Cuando carga una página web que tiene un montón de gráficos, no ve
GET /MyPage/image1.jpg;image2.jpg;image3.jpg
Simplemente no vale la pena la molestia.
Yo he usado en el pasado algo como esto.
/resources/a/d/
y eso devolvería entre x y Y una lista.
algo como
<resources>
<resource>a</resource>
<resource>b</resource>
<resource>c</resource>
<resource>d</resource>
</resources>
también puede colocar búsquedas más avanzadas en la URL dependiendo de qué recurso es real.
tal vez podrías intentar con
[GET] / compras / usuario: 123; limit: 30; sort_date: DESC