2012-07-09 3 views
0

Je construis une API RESTful dans laquelle l'utilisateur peut émettre une requête sur un objet donné, avec un poids attaché à cet objet. Par exemple:Comment structurer un URI RESTful avec plusieurs paramètres inter-reliés

http://host.domain.com/cars?id=100&weight=50

(Ceci est un artificiel, par exemple simplifié, donc des excuses si cela ne fait pas beaucoup de sens sémantique!)

La complication est que l'utilisateur pourrait avoir besoin de combiner plusieurs objets une seule requête. Ce que je me demande, c'est s'il y a une façon standard de faire cela? Par exemple, les options qui me viennent sont:

http://host.domain.com/cars?id1=100&weight1=50&id2=200&weight2=90

http://host.domain.com/cars?ids=100,200&weights=50,90

Je n'aime pas le second, parce que, par exemple, les poids sont facultatifs, de sorte que vous auriez besoin pour permettre quelque chose comme ceci:

http://host.domain.com/cars?ids=100,200&weights=,90

Le premier me semble préférable, mais il semble que cela pourrait devenir compliqué, d'autant plus que je l'ai déjà arguments indexés (e. g. x1, x2) ce qui signifie que j'aurai besoin d'avoir deux niveaux d'index (x1_1, x1_2, ...)

Quelqu'un connaît une approche standard de ce genre de chose? Ou peut-on penser à une solution pragmatique et sensée?

Répondre

0

Je ne sais toujours pas si cela est vrai ou non, et la suggestion de LeeGee semble raisonnable, mais je l'ai fini par aller avec quelque chose comme ceci:

http://host.domain.com/cars?id_1=100&weight_1=50&id_2=200&weight_2=90

Il finit par créer laide à la recherche Les URI, mais il me semble qu'elles sont cohérentes et non ambiguës, en particulier lorsque des arguments optionnels sont omis.

1

Je ne suis pas sûr que votre question est couverte par Cool URIs - http://www.w3.org/TR/cooluris/

Mon choix personnel, sans citations à l'appui, serait d'abord se débarrasser de la chaîne de requête en utilisant la configuration du serveur (redirection ou alias), de sorte que la ressource de base apparaît comme:

http://host.domain.com/cars

la liste des ID et le poids pourrait alors être ajoutés (dans la « information de chemin » de l'URI), délimitée comme bon vous semble - un point-virgule ou des barres obliques Mon choix serait le dernier, tout simplement car il rend l'URI plus propre à lire et plus facile à taper. Le seul moment qui devient un problème est si les poids sont parfois omis, bien que cela puisse être surmonté si les ID étaient alphanumériques (peut-être des hachages), et les poids toujours numériques.

+0

Donc vous finiriez avec quelque chose comme http://host.domain.com/car/100/weight/50/car/200/weight/90? Est-ce le genre de chose que vous voulez dire? – Ben

Questions connexes