I’m building a RESTful API in which the user can issue a query about a given object, with a weight attached to that object. E.g.:
http://host.domain.com/cars?id=100&weight=50
(This is a contrived, simplified example, so apologies if this doesn’t make much semantic sense!)
The complication is that the user might need to combine multiple objects in a single query. What I’m wondering is if there is a standard RESTful way to do this? For example, options that occur to me include:
http://host.domain.com/cars?id1=100&weight1=50&id2=200&weight2=90
http://host.domain.com/cars?ids=100,200&weights=50,90
I don’t like the second one, because, for example, weights are optional, so you’d need to allow something like this:
http://host.domain.com/cars?ids=100,200&weights=,90
The first one seems preferable to me, but it seems like it could become complicated, particularly as I already have indexed arguments (e.g. x1, x2) meaning I’ll need to have two levels of indexes (x1_1, x1_2, …)
Anyone know of a standard approach to this kind of thing? Or can anyone think of a pragmatic, sensible solution?
I still don’t know if this is right or not, and LeeGee’s suggestion seems reasonable, but I’ve ended up going with something like this:
http://host.domain.com/cars?id_1=100&weight_1=50&id_2=200&weight_2=90It ends up creating ugly looking URIs, but it seems to me that they’re consistent, and unambiguous, particularly when optional arguments are omitted.