Rails.application.routes.draw do get "/contacts" post "/contacts" get "/contacts/:id" put "/contacts/:id" delete "/contacts/:id" end Read Read Create Update Delete
Rails.application.routes.draw do namespace :api, :defaults => {:format => :json} do get "/contacts" post "/contacts" get "/contacts/:id" put "/contacts/:id" delete "/contacts/:id" end end
Rails.application.routes.draw do namespace :api, :defaults => {:format => :json} do get "/contacts" post "/contacts" get "/contacts/:id" put "/contacts/:id" delete "/contacts/:id" end end /api/URI
Rails.application.routes.draw do namespace :api, :defaults => {:format => :json} do get "/contacts", to: "contacts#index" post "/contacts", to: "contacts#create" get "/contacts/:id", to: "contacts#show" put "/contacts/:id", to: "contacts#update" delete "/contacts/:id", to: "contacts#destroy" end end
Status Codes • 200, Ok => Successful GET • 204, No Content => Successful DELETE or PUT • 201, Created => Successful POST • 422, Unprocessable Entity => Well formed request but there’s a semantic error. i.e. problem creating or updating a resource. • 401, Unauthorized => Authentication credentials missing or incorrect
Respond with JSON & Status Code class ContactsController < ApplicationController def index @contacts = Contact.all render json: @contacts, status: :ok end end 200
class ContactsController < ApplicationController def update if @contact.update(contact_params) head :no_content else render json: @contact.errors, status: :unprocessable_entity end end end 204 422
Non-resource responses • /calculate, /translate, /convert ?? • use verbs & make it clear in API docs • or POST /calculations, /translations, /conversions