Service-Oriented Design with Ruby and Rails (Addison-Wesley Professional Ruby)
Brandon Hilkert has been doing some posts about this topic. You can check them out here. There are also some books available on Amazon like this one. StichFix also created a gem to somewhat assist in this.
In few words – an a very practical, non academic explanation – a RESTful web service is a web server that answer requests that are structured following a :resource/:action/[:id] pattern.
For example, your users are a resource and you have these actions:
It is a CRUD interface: Create, Read, Update, Destroy.
Your sessions are resources too.
Some resources do not need to be have all CRUD actions.
For the original document that describes the RESTful architecture:
For a more practical examination of this matter:
I recently found myself pondering similar questions, how best to modularise a large application. As a relative Ruby newcomer (< a year), I dabbled with writing Rails APIs, and consuming them with ActiveResource. It didn't feel quite right to me, Rails felt too bloated for the APIs and ActiveResource felt too generic and incomplete for the client.
Then, I read Service Oriented Design with Ruby and Rails - Paul Dix, and it was like an epiphany! It covers your specific question of pros, cons & the theory very early on (chapter 1 I think), and does it very well.