Making it easy to do the right thing

Making it easy to do the right thing.

You'd think that a language with only a handful of verbs, only two of
which are widely spoken, would be easy to learn. Not so in the case of
the Hypertext Transfer Protocol, though. After more than a decade we're
still sorting out how and why to use its most common verbs: GET and

This perennial issue recently flared up again when Microsoft's Dare
Obasanjo noted
that three popular services had got it wrong. Bloglines, Flickr, and all offer APIs that claim to be RESTful — that is, to
conform to the Representational State Transfer principles of HTTP —
yet each violates those principles by allowing GET in some cases where
only POST should be allowed. [Full story at]

For this column I tried converting a resource-altering GET request into
a POST using four HTTP clients: curl, Python, Perl, and JavaScript.
It's almost effortless in the first two cases, not so in the last two.
I found myself wishing that Perl's LWP::Simple and JavaScript's
location.href had a data option like curl and Python's urllib.urlopen

Here's the JavaScript example that raised the question for me. My first Greasemonkey script added a private
checkbox to the posting form, then rewrote the page, adding
a script to process the form. That script was able to use location.href
to update, but not to update a private instance of scuttle, which (correctly) refused to allow an HTTP GET.

If JavaScript is going to be an appropriate technology of
intermediation, would it make sense for it to offer an easy way to
issue a non-interactive HTTP POST?  [Jon's Radio]

Leave a comment