Wednesday, December 15, 2010

Tuesday, December 7, 2010

"actual RESTfulness didn’t matter as much as simplicity"

William Vambenepe provides a useful take on Amazon's Query API which, as he says, it not REST. However, as he quotes from another piece he's written, "actual RESTfulness didn’t matter as much as simplicity".

As he puts it:
AWS mostly uses RPC over HTTP. You send HTTP GET requests, with instructions like ?Action=CreateKeyPair added in the URL. Or DeleteKeyPair. Same for any other resource (volume, snapshot, security group…). Amazon doesn’t pretend it’s RESTful, they just call it “Query API” (except for the DevPay API, where they call it “REST-Query” for unclear reasons).
http://stage.vambenepe.com/archives/1700
Although this is not REST, in practice there are many people out there who think "It uses a HTTP GET, therefore it's REST", even though it is calling a particular method, and also that it passes its parameters on the Query-String, not in the URI. One thing we've certainly noticed at Vordel is that there is a difference between "practical REST" (what people call REST, even though it isn't REST) and "pure REST" (actual REST). In some ways it is futile to rail against "practical REST" when faced with the "innovation, pragmatism and frequency of iteration" (William Vambenepe's words) of approaches such as Amazon's "Query API".

For a "horse's mouth" presentation about API's by an actual practioner, check out the recording of the webinar by Doug Birch from Blackhawk Network about their own API which is used to enable clients such as Facebook: http://www.vordel.com/research/10Nov2010FacebookIphoneREST.html