Ruby permet de faire simplement des choses difficiles. Mais faire des API REST (ou approchantes) restait pas plus compliqué que ça ne devrait. Avec Sinatra, on a souvent l'impression de devoir écrire bien plus de code à la main que l'on devrait. De l'autre coté, avec Rails, on a l'impression de passer son temps à désactiver des fonctionnalités ou de les surcharger.
Il existe maintenant une solution intermédiaire, spécialement adaptée pour construire des API REST : Grape. Ce micro-framework s'inspire de Sinatra mais offre en plus des petits trucs bien pratiques pour développer des API REST comme le versionning :
class ChuckNorrisFactsAPI < Grape::API
prefix 'api'
version 'v1'
get 'random' do
ChuckNorris::Facts.random
end
end
# GET /api/v1/random
# => {"fact": "Chuck Norris can beat Godzilla and King Kong in a hot dog fight "}
Par défaut, Grape renvoie du JSON, mais la prise en charge de formats multiples est sur la roadmap avec d'autres fonctionnalités bien sympathiques comme le rate-limiting ou la possibilité de créer de API de streaming.
Ainsi, Grape sera bientôt l'outil idéal pour faire des API comme #newtwitter
.