- From: Mark Nottingham <mnot@mnot.net>
- Date: Wed, 6 Feb 2002 19:15:56 -0800
- To: noah_mendelsohn@us.ibm.com
- Cc: distobj@acm.org, Williams Stuart <skw@hplb.hpl.hp.com>, xml-dist-app@w3.org
Not deeply different, no. One _interesting_ difference is that the first can have subresources of the operation, e.g., http://numbers.com/divide/remainder?... whereas the other approach would need a new argument http://numbers.com/?operation="divide"&suboperation="remainder" (arithmetic is perhaps a poor example here) As a subresource, we know that there's a certain relationship between the two resources; this is evident in such mechanisms as relative URIs. If the operation is done with arguments, we lose this relationship. Not earth-shattering, but it does give a means of composing applications through the interrelation of resources that has some nice properties. On Wed, Feb 06, 2002 at 09:28:40PM -0500, noah_mendelsohn@us.ibm.com wrote: > Regarding opacity, I am aware of the axiom, but you have to be careful how > to interpret it. > > http://www.w3.org/TR/ > > isn't particularly more opaque than > > http://numbers.com/multiply. > > What is true of the opacity rule is that middleware and the network, and > within reason the client and server, should not be computing on or > inspecting the substructure of the URI. Even the W3C web site in an > important sense dispatches on TR vs. Member, to identify the resource, > though at the next level up the entire URI is opaque. The URI > architecture explicitly embraces hierarchical URIs, which are in that > sense not opaque when you're putting them together or serving them up. > > The only difference I see per web architecture between > > http://numbers.com/multiply?inputnumber1="3"+inputnumber2="4" > > and > > http://numbers.com/?operation="multiply"+inputnumber1="3"+inputnumber2="4" > > is that we can guess that to implement both multiplication and division, > the first style would result in two separate parameterized web resources > (a multiplying resource, and a dividing resource) while the second would > use a single parameterized resource (an arithmetic resource). I don't see > the two as deeply different from a web architecture point of view. > > ------------------------------------------------------------------ > Noah Mendelsohn Voice: 1-617-693-4036 > IBM Corporation Fax: 1-617-693-8676 > One Rogers Street > Cambridge, MA 02142 > ------------------------------------------------------------------ > > > > > > > > Mark Baker <distobj@acm.org> > 02/05/2002 09:35 PM > > > To: Noah Mendelsohn/Cambridge/IBM@Lotus > cc: mnot@mnot.net ('Mark Nottingham'), skw@hplb.hpl.hp.com (Williams Stuart), > xml-dist-app@w3.org > Subject: SOAP & REST > > > > What I _think_ one would typically do with HTTP independent of SOAP > would > > be something like sending a GET to: > > > > http://numbers.com/multiply?inputnumber1="3"+inputnumber2="4" > > That would be a good example of a URI that I would use, but what's > important here is what information you can extract from the URI itself. > More below. > > > implying that all the products represent one parameterized resource. > Now, > > consider the following SOAP: > > > > <s:envelope xmlns:s="...soap env uri..."> > > <s:body> > > <multiply xmlns="...math namespace..."> > > <inputnumber1>3</inputnumber1> > > <inputnumber2>4</inputnumbe2> > > </multiply> > > </s:body> > > </s:envelope> > > > > An obvious binding would be: > > > > > > http://numbers.com/?operation="multiply"+inputnumber1="3"+inputnumber2="4" > > Right. The difference between this URI (and its SOAP equivalent), and > the other URI is that this one requires the client know what "multiply" > means. > > The relevant architectural principle here is; > > http://www.w3.org/DesignIssues/Axioms.html#opaque > > In the first URI above, "http://numbers.com/multiply" is entirely opaque. > No information can be extracted from that URI string such that a user or > machine can know that multiplication is occuring. > > In the second URI, the operation is part of a query parameter which is > a less opaque part of the URI from the point of view of the client > (though opacity of query parameters can be rigged with hidden form > fields). > > > Anyway, to net it out, my concerns in this note are: > > > > 1) to point out that in many cases, it is the _service_ that is the web > > resource when we're building web services. > > 2) to ask those who understand REST better than I do how they would > model > > such a situation, with or without SOAP > > I'd go with the former URI. > > If you're now wondering how it is that some piece of software knows > the difference between a multiplication or a division service, that's > where hypertext comes in; an assertion needs to be made that the > resource is a "multiplier" (and there'll be some URI for that). > > MB > -- > Mark Baker, Chief Science Officer, Planetfred, Inc. > Ottawa, Ontario, CANADA. mbaker@planetfred.com > http://www.markbaker.ca http://www.planetfred.com > > -- Mark Nottingham http://www.mnot.net/
Received on Wednesday, 6 February 2002 22:15:58 UTC