REST Talk @ QCon Online
The introductory REST talk I gave at QCon London is online (videos and slides). Feedback welcome, either here or there.
This is a single archived entry from Stefan Tilkov’s blog. For more up-to-date content, check out my author page at INNOQ, which has more information about me and also contains a list of published talks, podcasts, and articles. Or you can check out the full archive.
The introductory REST talk I gave at QCon London is online (videos and slides). Feedback welcome, either here or there.
Hi Stefan, Very good presentation. Just a few comments/questions: 1. I am currently reading the RESTful Web Services book and am interested in knowing what you disagree with in it.
According to Roy Fieldings dissertation, the Uniform Interface is made up of four sub-constraints namely a) URI b) small set of methods c) self-descriptive messages and d) hateoas. When I think of Uniform Interface I cant see beyond (b). Where/how do the others fit in to the Uniform Interface??
Am I correct in saying that RESTful systems do not need WSDL because the interface is already decided (GET, PUT etc..) and the data is carried in the URI (which is already decided also). WADL is not necessary then…?
Thanks, Sean.
Thanks Sean.
Re: my disagreements with the RESTful Web Services book: To be honest, I can’t remember in detail since it’s been a while. I plan to give it a re-read soon and will answer then.
The uniform interface is most visible in the fact that there standard methods. But there’s more that is the same for all resources, such as the fact that you interact with them through representations, and this (as well as the other aspects) is part of the interface. So the “uniform interface” really translates (IMO) to the stuff that is the same for every resource you interact with.
And yes, I would claim that WSDL and WADL are not necessary for RESTful systems, but for slightly different reasons: the semantics of the data formats (that make up the message bodies that are POSTed, PUT, and returned for GET, not the URI) are communicated using some out-of-band means, and the rest of the interface is the same for every application.
Thanks for that Stefan. The Uniform Interface sub-constraints are much easier to understand when one keeps “the stuff that is the same for every resource” in mind. I take it “out-of-band” means a web page, email or even word of mouth?
Sean.
Yes, although using only standardized and widely adopted formats would be ideal (if rarely achievable).
Hi Stefan, it’s a really nice presentation. Especially, it was nice how you explained statelessness by doing the circle from avoiding hitting the database to hitting the database in non-obvious ways anyway.
I probably expected a bit more on the data (standardized media types, JSON, data in URI, analogy between HTML forms and service description). But the time is obviously a limit. Certainly it doesn’t feel like a hole in your talk - it was very well scoped.
But I kinda disagree about the need for a “WSDL equivalent” - while the Web is very self-descriptive, there seems value in an interface contract that’s in a single document, that would summarize what kinds of resources there are and what operations. WADL may be going a step too far, maybe; for one thing, I personally don’t have any use for descriptions of the hypermedia structure of the service. WSDL 2.0 doesn’t seem to be a perfect fit either.
I mentioned operations, and this brings me to what you already wrote about - Keith Chapman’s WSDL 2.0 description of your RESTful example. As Jonathan Marsh pointed out in http://auburnmarshes.spaces.live.com/Blog/cns!F985A6952BC07C4!951.entry , Keith maps a combo of URI template and HTTP method to a WSDL operation, and I very much agree with that mapping (concurrently with Keith, we were writing a similar thing in our paper on hRESTS - a RESTful service description microformat, see http://jacek.cz/publications/2008-12-wi-hrests.pdf ). Operations have application semantics (well, maybe it’s only POST that really has space for special semantics, and even there Richardson&Ruby would disagree) and they are the steps that a client takes.
But I digress. Nice talk, thanks for putting it online. Also, too bad we have so little overlap in conferences we attend.
Best regards, Jacek