the restful practices practice guidelines good designing best design http api rest

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