lukerollans
lukerollans

Reputation: 372

How to best share routes between Rails app and Rails API

I am writing my first "real" Rails app after making a few successful learning projects and I'm still a little bit iffy on best practises for App vs API routes. Ideally, API routes will be RESTful, mainly revolving around using resources :articles or whatever, but I'm wondering which of the the following two scenarios is best

I appreciate any feedback that anyone has.

Upvotes: 0

Views: 100

Answers (1)

janfoeh
janfoeh

Reputation: 10328

The default "Rails way" is to make your models available to different clients through a single set of URIs, handled by a single set of controllers — /articles for browsers, /articles.json or /articles.xml for programmatic access. You can see that in Rails' emphasis on "resources", the respond_to mechanism in your controllers and so on.

This often works very well for simpler APIs that match the CRUD semantics closely. If yours for whatever reason does not, you might be better off with separating it out.

Try starting out the simple way by sticking to this 'one controller for both' approach. If you like, you could use

scope '(api)' do
  resources :articles
  resources :authors
  resources :comments
  # ...
end

to add an optional '/api/' path segment to your URLs - in this case, giving you both /api/articles and /articles, routed to the same controller. This gives you an easy way out, should you later decide to switch to separate controllers for HTML and API access.

Upvotes: 3

Related Questions