RE: [rest-discuss] Use verbs in URIs? [was: REST Best Practices]
Paul Prescod wrote:
> Philip Eskelin wrote:
> >
> >...
> >
> > I'm not sure where my version of this verb/URI issue stands, but
> > here is the way I have designed it in my own efforts. As I mentioned
> > before, I have a pre-developed set of resource types, namely methods,
> > components, topics, queues, etc that are published in a node's
> > hierarchical namespace.
>
> I guess the basic question is whether you *need* method objects. A
> REST-purist view would be that you should use methods as an
> implementation technique to implement a resource view of the world.
> Since I don't know what method objects you have, I can't
> resource-decompose them. But in most cases you will want an action to
> have a side-effect that creates a resource+URI, and you will want the
> newly created resource to be in some container. So you can
> instead use a POST on the container.
My question was "what are you posting to?" and that's where I came up with the
idea of creating method resources, which have URIs (if they are published), can
be invoked via POST, and need to exist in a container. GETing, PUTing, and
DELETEing methods act on the resource itself.
> >...
> > HTTP PUT - instead of getting a pre-existing resource like the one
> > above, it allows you to effectively copy a resource in its current
> > state to another node. You are effectively publishing it on the
> > destination node.
>
> It's not clear to me how you can copy a method. After all, the real
> method is the programming code behind it. And that code will
> depend on a complex network of other state. So PUT-ting to a method
> resource doesn't make much sense to me.
Sorry about that - I'll clarify. One thing I forgot to write into my original
method example was a "localHost" property that references the component where
the implementation of the method is hosted. So if you merely copy the method
resource, it then exists in a new container but references the same
implementation.
So if you wanted to do what you thought I meant in your response, you would also
need to copy the component to a new location, update new method's localHost URI,
and integrate the new component into its environment. If the destination node
was identical to the source (code doesn't always depend on a complex network of
state), then it might work without modification.
I agree with you, PUTing to a method resource doesn't make sense. Instead, you
would want to PUT the method to a container. Is that more clear? Like Roger, I
want to make sure my work reflects resolve on these issues.
This discussion on whether verbs should be used in URIs is excellent! Thanks Joe for raising this issue. It has certainly stimulated new ideas and questions...
Roger L. Costello
costello@...
Jun 15, 2002 2:52 pm
Here's an alternate view of purchasing that might make the resource view more clear (and more like nouns): There are at least two stages of purchasing on the...
... The one I've seen used most often (mostly on contract agreements before downloading, not purchasing) is when a POST button is selected to agree, and then...
Mark Baker
distobj@...
Jun 17, 2002 6:38 pm
... I'm not sure where my version of this verb/URI issue stands, but here is the way I have designed it in my own efforts. As I mentioned before, I have a ...
... method? ... things ... I know. I'm afraid I expressed my question very badly. I should have written "is there a pattern for how Web sites usually handle...
... I guess the basic question is whether you *need* method objects. A REST-purist view would be that you should use methods as an implementation technique to...
... My question was "what are you posting to?" and that's where I came up with the idea of creating method resources, which have URIs (if they are published),...
I'm struggling to catchup with rest-discuss, but found one point I wanted to respond to, only to lose the message. Basically, somebody was looking for an API...
Mark Baker
distobj@...
Jun 17, 2002 5:33 pm
... I would love to hear more detail on your experiences using this API wrt REST I have been keeping tabs on Cocoon (http://xml.apache.org/cocoon/) as a...
Robert Leftwich
robert@...
Jun 18, 2002 12:07 am
... I've worked with Cocoon a fair bit recently, there are 3 tutorials on developerWorks that I wrote if you want some more background on it. I've been...
... We Cocoon a lot here, and it can accept XML documents in a POST. The one thing that is nice about Cocoon is the sitemap, which is a mapping of logical...
... Servlet v2.x also has doDelete() and doPut(). Cocoon requires v2.2 so it should be able to be supported, but I don't know to what extent it actually is...
Robert Leftwich
robert@...
Jun 19, 2002 6:09 pm
Hi Roger, I'm not sure that there is sufficient disagreement here to warrant "camps" in this discussion, but as usual, you've done a great job summarizing the ...
Joe Hsy
joe.hsy@...
Jun 16, 2002 7:24 am
... You've identified two resources - what part tells it to take an action? and what action does it take? http://www.my-home.org/air-conditioning/on could test...
... application ... For me, those example are not 'natural', they are merely 'procedural'. A noun/object/resource based approach isn't any more natural either...
... I think that they vary widely. I think that after you do all of the negotiation and credit card stuff you should just have a "click here to download your...
... That doesn't seem very smart from a business perspective. You're talking about an information product being sold for money, right? What's to stop me from...
... Ah ... you're right. Nonetheless, I see a lot of businesses obfuscating URIs or creating them for each (business) transaction, presumably so that people...
... Well I did say that the download URI and license URI would usually be separate. By license URI I meant a license key that makes the download work. That key...
... From: S. Mike Dierken [mailto:mdierken@...] ... I agree that what is "natural" is often a matter of opinion. And I certainly don't view these as...
Joe Hsy
joe.hsy@...
Jun 17, 2002 8:25 pm
... From: Philip Eskelin [mailto:philip@...] ... the ... published), can ... and ... This is very cool and is very much what I was getting at. I can't...
Joe Hsy
joe.hsy@...
Jun 18, 2002 8:43 am
... Yes, I agree with you. This is a concern of mine, and one of the reasons I've asked the group about their thoughts on it. What I really wanted to do was ...
... Yes. What you and Joe have been discussing is not REST, it's RPC with the method in the URI rather than in the body. With REST, a common way of ordering a...
Mark Baker
distobj@...
Jun 18, 2002 4:59 pm
For this example, and to make it more RESTful, I would change it to this... ... NEW: Order order = new Order("http://www.parts-depot.com/orders/32432"); ...
... Got it. I see the difference. ... This is something that will also apply to my topic and queue abstractions. For example, when you publish to a topic,...
As a side note, in HTTP you can provide a header like : content-disposition: attachment; filename=suggested_name.ext for content-types other than octet-stream...
... From: Seth Ladd [mailto:seth@...] ... I don't think calling methods and transferring state are necessarily mutually exclusive. Calling a method is a...