How did Amazon allow this design out into the wild? Apparently they've already had a private beta period with non-Amazon developers. No one suspected this use of HTTP GET to be a poor choice?
It's 2007. There are all kinds of basic REST reference and getting started materials. Didn't the whole net go through that "Google is pre-caching everything it can GET" episode a couple years ago. That's the episode where the Rails folks learned that GET should not have side effects.
Wow. Hopefully Amazon will POST a fix asap.
Subbu Allamaraju calls this "SOAPy REST". Didn't even the SOAP folks learn to avoid these kinds of GETs a couple years ago?
IBM published an article recently on using HTTP to access DB2 and IDS. The URLs they provide need improvement, embedding the operation in the URL. This despite that they do seem to be distinguishing between GET and POST. From the information at that site and another bit I could get behind their developerWorks login, it's not clear to me yet whether they allow the use of GET with a URL that includes a destructive operation.
Maybe the RESTful Web Services book will begin to turn these things around. But that Amazon did this in 2007 is a bit of a shock.
Update: Steve Loughran nominates SimpleDB for a new award...
I nominate it for the 2007 Restless awards, in the much contested category ofYeah, maybe there should be annual (or more frequently, on Internet-time, awards for "RESTless" and "RESTful" web services that degrade or enhance, RESTpectfully, the web."things that claim to be RESTful but do side effects in their GETs" along with the ever popular "SOAP endpoint in disguise" category
I know this mailing list has not, historically, had such awards, but now is as good a time to start as any.
3 comments:
I suspect a number of the Amazon web-services have to fit into the existing infrastructure and if the shared infrastructure is broken (for example what Amazon terms REST) then the services using that infrastructure will be similarly broken.
Suit-wearing-boss: "What do you mean you want to develop your own web front-end load-balancer that does REST properly? We've already got a solution that has been operational for ages. Moreover its is being used by all our other services? Do you want to be the odd one out?"
I am not sure I understand the comment.
Wow, I totally missed this when reading the docs. My eyes saw REST and my brain just went of course, PUT, POST, DELETE. ;-(
S3 has a (more-or-less) truly RESTful API... I wonder why they botched it for SimpleDB.
Post a Comment