Novecento Normal
Novecento Demibold
Novecento Bold
Trop d’API tuent l’API !
Si vous nous suivez depuis quelques temps vous avez pu voir pas mal de gems pour utiliser des API. C’est cool, mais si on faisait la nôtre ? :)
Aujourd’hui c’est Grape qui sert à faire des API sous forme d’application à la Sinatra mais avec quelques trucs sympathiques :
Un petit exemple issu de la documentation :
class Twitter::API < Grape::API
version 'v1', :using => :header, :vendor => 'twitter'
helpers do
def current_user
@current_user ||= User.authorize!(env)
end
def authenticate!
error!('401 Unauthorized', 401) unless current_user
end
end
resource :statuses do
get :public_timeline do
Tweet.limit(20)
end
get :home_timeline do
authenticate!
current_user.home_timeline
end
get '/show/:id' do
Tweet.find(params[:id])
end
post :update do
authenticate!
Tweet.create(
:user => current_user,
:text => params[:status]
)
end
end
resource :account do
before { authenticate! }
get '/private' do
"Congratulations, you found the secret!"
end
end
end
Ensuite on ajoute une petite ligne à notre config.ru :
run Twitter::API
Voilà maintenant toute une liste de routes accessibles :
Pratique, non ? Oui mais le faire en Rails au final aurait pris autant de lignes. Alors quel intérêt ?
Et bien il vaut mieux laisser le serveur Web pour le reste, non ?
Les liens utiles