
On May 14, 2009, at 9:53 AM, Sam Johnston wrote:
Here's the rule (http://www.w3.org/TR/webarch/#safe-interaction): "Agents do not incur obligations by retrieving a representation."
That is to say, spiders and pre-fetching proxies and so on are perfectly entitled to GET any link they see, and if mayhem ensues, it's the server's fault, not the client. People often say "GET should not cause a change in state" which is wrong, because it writes logfile entries and sets cookies and all sorts of stuff.
Ok so I guess I mis-parsed the part of your post where you said "The reboot and halt buttons don’t really have any state, so you shouldn’t expect anything useful from a GET". I'm guessing a "POST" is the best way to "push" a button then?
Right. I was getting whining from people about the notion of a "write- only resource" and I was pushing back, saying "What's the problem with that? If there's a red button on the side of a machine that makes it restart when you push it, the button has no meaningful state, you can only push it" So yes, I think POST is a good choice for an actuator. If you look at the discussion in http://www.tbray.org/ongoing/When/200x/2009/03/20/Rest-Casuistry and then the comments, you'll see that people proposed a bunch of other ideas, some of them quite clever and some verging on the metaphysical, but I think that just doing a POST hits a nice 80/20 point both in terms of comprehensibility for the client and tractability for the implementor. -Tim