Design d’URL REST – plusieurs ressources dans un appel HTTP

Duplication possible:
Rails 3 Route personnalisée prenant plusieurs identifiants comme paramètre

D’après ce que j’ai compris, une bonne URL REST pour obtenir une ressource ressemblerait à ceci:

/resource/{id} 

Le problème que j’ai, c’est que j’ai souvent besoin d’un grand nombre de ressources en même temps et que je ne veux pas faire un appel HTTP distinct pour chacune d’entre elles.

Existe-t-il une conception d’URL ordonnée pour cela ou est-ce que cela ne convient pas pour une API REST?

Sur la base de votre réponse, la réponse à votre question est de créer une nouvelle ressource contenant cet ensemble unique d’informations. par exemple

 GET /Customer/1212/RecentPurchases 

La création d’URL composites ayant de nombreux identifiants dans une seule URL limite les avantages des caches et ajoute une complexité inutile au serveur et au client. Lorsque vous chargez une page Web contenant un tas de graphiques, vous ne voyez pas

 GET /MyPage/image1.jpg;image2.jpg;image3.jpg 

Ça ne vaut pas le coup.

Je dirais /resources/foo,bar,baz (le séparateur peut varier selon la nature des identifiants et vos préférences esthétiques, ” foo+bar+baz “, ” foo:bar:baz “, etc.). Semble un peu “sémantiquement” plus propre que foo/bar/baz (“baz de barre de foo”?)

Si les ID de ressource sont numériques, peut-être même avec un raccourci de plage tel que /resources/1,3,5-9,12

Ou, si vous avez besoin d’interroger pas exactement sur des ressources avec des identifiants spécifiques, mais sur un groupe de ressources ayant des propriétés spécifiques, peut-être quelque chose comme /resources/state=complete/size>1GiB/!active/

J’ai déjà utilisé quelque chose comme ça dans le passé.

 /resources/a/d/ 

et cela renverrait entre x et Y une liste.

quelque chose comme

  a b c d  

Vous pouvez également placer des recherches plus avancées dans l’URL en fonction de la ressource actuall.

peut-être que vous pourriez essayer avec

[GET] / Purchas / User: 123; Limite: 30; sort_date: DESC