créer son API Raphaël Audet Pierre Renaudin Apéro Ruby Bordeaux, 10 Janvier 2011 mardi 10 janvier 12
créer son APIRaphaël AudetPierre RenaudinApéro Ruby Bordeaux, 10 Janvier 2011
mardi 10 janvier 12
créer son API
• Pourquoi créer son API ?
• Quelles sont les solutions qui existent ?
• Démo d’une API réalisée avec RABL
mardi 10 janvier 12
Pourquoi une API ? 1/2
• Pour ouvrir son application à des acteurs externes
api.twitter.com
site de recherche sur twitter blog app facebook
mardi 10 janvier 12
Pourquoi une API ? 2/2
• Pour séparer les clients ( web, mobile ...) du serveur et améliorer les performances
api.twitter.com
client web client mobile client iphone
mardi 10 janvier 12
Solution 1 : utiliser rails
Texteclass User < ActiveRecord::Base field :first_name field :last_name field :address
def name self.first_name + ' ' + self.last_name endend
class UsersController < ApplicationController def show render :json => @user end
end
{ id: ‘28ds84dsd’,first_name: ‘Ted’,last_name: ‘Penn’,address: ‘3 rue Anchor...’}
models/users.rb
controllers/users_controller.rbmardi 10 janvier 12
Solution 2 : utiliser acts_as_apiclass User < ActiveRecord::Base acts_as_api
api_accessible :public do |t| t.add :id t.add :name end
def name self.first_name + ' ' + self.last_name endend
class UsersController < ApplicationController def show render_for_api :public, :json => @user end
end
{ id: ‘28ds84dsd’,name: ‘Ted Penn’}
controllers/users_controller.rb
models/users.rb
mardi 10 janvier 12
Solution 3 : utiliser RABL
class UsersController < ApplicationController def show render @user end
end
attributes :id, :name
child :pets do extends ‘pets/base’end
controllers/users_controller.rb
views/users/show.json.rabl
{ id: ‘28ds84dsd’,name: ‘Ted Penn’,pets: [ {name: ‘choupette’}, {name: ‘choupy’}]}
mardi 10 janvier 12
Démo - 1
mardi 10 janvier 12
Démo - 2
mardi 10 janvier 12
Démo - 3
controllers/messages_controller.rb
mardi 10 janvier 12
Démo : RABL WAY ! 4
Gemfile
views/messages/index.rabl messages_controller.rb
mardi 10 janvier 12
Démo - 5
mardi 10 janvier 12
Démo : autre exemple 6
views/users/base.json.rabl
mardi 10 janvier 12
Références
•Rabl : https://github.com/nesquena/rabl
•acts_as_api : https://github.com/fabrik42/acts_as_api
mardi 10 janvier 12