| > Is it possible to get all that information in one round trip ? If we're talking about the same thing, yes. One pattern that I use in my APIs is as follows: Assume a JSON object like: { name: "Joe", colour: [ {red: 0, green: 128, blue: 90}, {red: 35, green: 88, blue: 199} ], hair: { length: { value: 9, uom: "cm"} } I have on occasion provided an API like: # Assume that {id} returns an object like the above. GET /api/{id} # Returns the full object POST /api/{id} # Replaces the object PUT /api/{id} # Overwrites properties in the object GET /api/{id}/name # Returns "Joe" POST /api/{id}/name # Overwrites the name PUT /api/{id}/name # Overwrites the name (also) DELETE /api/{id}/name # Removes the "name" property GET /api/{id}/colour/0/green # Returns "green". Other methods as above. * /api/{id}/hair/length/value PUT /api/{id}/hair/colour # Creates a new property GET /api/{id}/colour/0;2 # Returns the first and third items in the array GET /api/{id}/colour/1/red;green # Returns those two properties from the object. Note that this imposes some restrictions on property naming (no semicolons) And this I never implemented, but I would if I had a need: GET /api/{id}/colour/(0/red;green);(1/blue) # Returns [ { red: 0, green: 128}, {blue: 199} ] |