Un jour, une gem

26/01/2012

Jeudi c'est acts_as_api

gem install acts_as_api

Pour des réponses XML/JSON 

Marre de faire des API qui ne sont pas DRY ? Alors dites bonjour à acts_as_api, la gem cool et pratique.

À l’usage, c’est plutôt simple : après avoir ajouté la gem à votre Gemfile et fais un petit bundle install on peut commencer :

Model

class User < ActiveRecord::Base
  #on active acts_as_api pour ce model
  acts_as_api

  # on détermine les attributs accessible pour ce model
  api_accessible :name_only do |template|
    template.add :first_name
    template.add :last_name
  end
end

Controller

class UsersController < ApplicationController
  def index
    @users = User.all
    #on répond avec acts_as_api, tous les utilisateurs
    respond_to do |format|
      format.xml  { render_for_api :name_only, :xml => @users, :root => :users  }
      format.json { render_for_api :name_only, :json => @users, :root => :users }
    end
  end
  def show
    @user = User.find(params[:id])
    #on répond avec acts_as_api, l'utilisateur correspond à l'id donné
    respond_to do |format|
      format.xml  { render_for_api :name_only, :xml  => @user }
      format.json { render_for_api :name_only, :json => @user }
    end
  end
end

Et voilà, une belle réponse JSON et XML propre. Envie d’en savoir plus ? Les liens utiles :