

RESTful Transactions - fogus
http://jcalcote.wordpress.com/2009/08/06/restful-transactions/

======
shpxnvz
Actually, I think this quote posted in the comments is more interesting:

“If you find yourself in need of a distributed transaction protocol, then how
can you possibly say that your architecture is based on REST? I simply cannot
see how you can get from one situation (of using RESTful application state on
the client and hypermedia to determine all state transitions) to the next
situation of needing distributed agreement of transaction semantics wherein
the client has to tell the server how to manage its own resources.”

— Roy Fielding, rest-discuss, 2009-06-09

------
axod
Is there a simple paragraph that describes what "Being RESTful means/what
problem it solves"? I know it's "so hot right now", but I'm not sure if I'm
missing something, or if it's just restating previous results.

Is it just simply revising what the HTTP methods were designed for and how
they behave on browsers/servers/caches/proxies?

~~~
bct
[http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch...](http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)

It's not that long. I have yet to see a paragraph-length description that is
an accurate summary of it (and blog-entry-length descriptions cause a lot of
confusion).

------
justin_hancock
This really is nothing new. EAI platforms have had to deal with this for
years, they solve it with idempotent updates e.g. UPDATE WHERE rather than
relying on locks - ensure transaction tables have timestamps which can be used
for this purpose. This also improves your throughput and avoids all the
problems that locking brings e.g. deadly embrace and poor performance.

Trying to perform guaranteed updates across HTTP transactions is always going
to be tricky. The other factor is old database principals atomicity and ACID.

------
bkudria
See this paper: "RETRO: A (hopefully) RESTful Transaction Model":
[http://docs.google.com/View?id=ddffwdq5_2csz22wfd&pagevi...](http://docs.google.com/View?id=ddffwdq5_2csz22wfd&pageview=1&hgd=1)

------
JulianMorrison
How to do REST transactions?

1\. Put a uuid under /transactions/

2\. /transactions/<uuid>/ is a COW copy of /

3\. make changes

4\. put "commit" to /transactions/<uuid>/status

