Existe-t-il une gem/plugin pour définir une API dans Rails?Plugin pour spécifier de manière déclarative une API dans Rails comme django-piston
Je sais que vous pouvez avoir des « routes RESTful » et rendre à différents formats dans les actions du contrôleur, mais je suis à la recherche d'un plus tout autour de la solution, y compris mais sans s'y limiter à ce qui suit:
Je voudrais déclarer les modèles à exposer (les ressources arbitraires pourraient aussi être déclarées, mais la convention devrait m'aider quand elles sont mappées sur des modèles), les champs à rendre disponibles et comment les données devraient être disposées, quel type d'authentification/autorisation est nécessaire pour quelle ressource/opération, quel genre de limitation je veux. Il aurait également un moyen facile de produire automatiquement des ressources à différents formats (sans avoir besoin de n'importe quel modèle), et fournir le streaming et la notification par webhooks et/ou PubSubHubBub, ainsi que la mise en cache efficace.
Idéalement, je pourrais avoir cette asseoir sur ActiveRecord sans même avoir besoin d'ActionController, donc je pourrais avoir une petite application API seulement.
Je sais qu'il y a quelque chose dans ces lignes pour Django appelé django-piston, mais je ne l'ai pas utilisé moi-même et je ne suis pas sûr de ce qu'il couvre.
Y at-il quelque chose comme ça dans Rails? Ou suis-je complètement égaré en voulant ceci (et pourquoi?) Et devrait plutôt remplir ce besoin avec des rails de vanille plus une poignée de plugins (lesquels?)?
Sur le côté "vous devriez juste utiliser Rails + plugins", j'ai trouvé cet excellent article sur l'approche: http: // www.codesopretty.com/rails/plugin-synergy-for-rails-powered-apis/ – hsribei
Si votre API comprend plus qu'un simple URI de point d'entrée, alors ce n'est pas REST. Les API REST décrivent uniquement vos types de média. Les URI de vos terminaux doivent être détectables via un lien hypertexte. C'est bien si ce n'est pas ce que vous voulez, mais s'il vous plaît n'utilisez pas le terme "REST" si ce n'est pas ce que vous voulez dire. – aehlke