39 votes

Conception d'URL REST - plusieurs ressources en un seul appel HTTP

Double Possible:
Rails 3 Itinéraire Personnalisé qui prend plusieurs id en paramètre

Ce que je comprends, un bon REPOS URL pour obtenir une ressource devrait ressembler à ceci:

/resource/{id}

Le problème que j'ai est que j'ai souvent besoin d'obtenir un grand nombre de ressources au même moment et ne veux pas en faire un distinct HTTP appel pour chacun d'eux.

Est-il soigné URL conception qui répondrait pour que ou est-ce tout simplement pas adapté pour une API REST?

33voto

Darrel Miller Points 56797

En fonction de votre réponse, la réponse à votre question consiste à créer une nouvelle ressource contenant cet ensemble d'informations unique. par exemple

 GET /Customer/1212/RecentPurchases
 

La création d'URL composites comportant plusieurs identificateurs 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 de nombreux graphiques, vous ne voyez pas

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

Cela ne vaut tout simplement pas la peine.

3voto

drdaeman Points 3312

Je dirais /resources/foo,bar,baz (séparateur peut varier selon l'Id de la nature et de vos préférences esthétiques, "foo+bar+baz", "foo:bar:baz", etc.). Ressemble un peu à "sémantiquement" plus propre qu' foo/bar/baz ("baz de la barre de foo"?)

Si l'Id de ressource sont numériques, peut-être, même avec une gamme de raccourci comme /resources/1,3,5-9,12

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

1voto

Bluephlame Points 1794

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

 /resources/a/d/
 

et cela retournerait entre x et Y une liste.

quelque chose comme

 <resources>
  <resource>a</resource>
  <resource>b</resource>
  <resource>c</resource>
  <resource>d</resource>
</resources>
 

vous pouvez également effectuer des recherches plus avancées dans l’URL en fonction de la ressource utilisée.

-8voto

TheVillageIdiot Points 22158

Est-ce que ça va marcher?

 /resoruces/{resource-type}/{resource-id}/{resource-type}/{resource-id}
/{resource-type}/{resource-id}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X