Apologies ahead of time if replying to an old post is bad form on SO.
@bobince
I'm not too bothered with ‘complying’ with REST as an abstract standard, but it's a real concern if stray, leakable, cacheable GET requests can accidentally have side-effects.
There are strategies you can use to reduce the likelihood of this sort of problem, such as requiring a per-API-user and/or one-time-use submit-key as a parameter to allow the action to go ahead. If you are allowing write access to an API via JSONP you will need to be thinking about this sort of thing anyway, to prevent XSRF attacks.
So true RESTful is not possible with JSONP due to a lack of PUT, DELETE and POST verbs. However, many JSONP APIs still allow writes. I vaguely recall it being possible in Facebook's OAuth JSONP API.
Regardless, it would seem that a faux RESTful JSONP API could be achieved by assuming server-side if both "callback=" AND "method=" are present in the URL and method is one of GET, POST, DELETE or PUT then it will be treated as though it were a true REST request.
This breaks the single URL for a single resource paradigm of REST as callback will change nearly every time, and even if it remained constant, there would be 4 URL representations, one for each method. So my question is, what are the ramifications of this break from the RESTful paradigm, specifically regarding your concerns of "stray, leakable, cacheable GET requests" with potentially "[accidental] side-effects"?