On Jun 8, 2007, at 6:53 PM, Todd Biske wrote: > On Jun 8, 2007, at 11:30 AM, Anne Thomas Manes wrote: > > > > > If you strictly follow the method semantics defined in the HTTP 1.1 > > protocol, then it is RESTful. But HTTP 1.1 doesn't enforce those > > method semantics. That would be considered "abuse", though. > > > > Is it true that a system that makes extensive use of the POST > loophole, but only does so where "the origin server is accepting the > entity enclosed in the request as a new subordinate of the resource > identified by the Request-URI" (from spec) would still be RESTful > then?
This sound like "if a system uses POST the way it's supposed to, is it RESTful"? If this was the question I'd answer that yes, it is (at least in this regard). > Many WS-* implementations would certainly not qualify because > things that should be GETs are being tunneled as POST, correct? > Yes; even clearer than the loss of GET's benefits (e.g. caching) is the fact that typical WS-* applications usually expose a small number of "endpoints" as URLs, whereas in a REST approach, they'd expose thousands or millions of them - e.g. one for each customer, each order, each process, each account, each transaction ... lots of information added to the Web directly instead of hidden behind a small channel available to the initiated only. > The POST loophole concerns me. Clearly, you need POST because you > need the ability to make a relative change to a resource, but it > seems that as long as some form of update is happening, you can push > about anything you want through POST and still be considered > RESTful. It seems that this would be very tempting for someone to > take a very un-resourceful approach. Am I correct on this? I'm not entirely sure we have the same understanding about POST (if at all, I'd rather map it to CREATE than UPDATE), but I would state again that the key difference between REST and WS-* (or POX, for that matter) is the primary usage of URIs to identify resources. Stefan -- Stefan Tilkov, http://www.innoq.com/blog/st/ > > -tb > >
