Hello,
I think the best solution for you is to merge your first two points.
I suggest using JSON instead of XML: the only point in favor of XML is XPath which is useless in returned data. JSON leads to better response time (and more readable data for better debugging ! :p). Plus, most languages can read JSON. For instance, PHP can natively parse JSON to array/object with json_decode
, so it's a nice point. ;)
For controllers, you can namespace it but it's not an obligation, maybe it's better in certain cases to avoid fat actions with tons of conditions. With the Rails 3 router, the separation of API calls in a subdomain (api.webapp.com) is trivial).
For the model, sure you should use the same as used in the whole application.
The new rails router syntax is sugar, you will enjoy. Good luck & have fun! :)