2009-08-08 8 views
2

Gibt es ein Juwel/Plugin zum Definieren einer API in Rails?Plugin für die deklarative Angabe einer API in Rails wie django-kolben

Ich weiß, Sie können „RESTful Routen“ haben und in verschiedenen Formaten in Controller-Aktionen machen, aber ich bin auf der Suche nach einer Allround-Lösung, einschließlich, aber nicht beschränkt auf die folgenden:

Ich möchte um zu deklarieren, welche Modelle angezeigt werden sollen (willkürliche Ressourcen könnten auch deklariert werden, aber Konvention sollte mir helfen, wenn sie Modellen zugeordnet werden), welche Felder verfügbar machen und wie die Daten angelegt werden sollen, welche Art von Authentifizierung/Autorisierung benötigt wird für welche Ressource/Operation, welche Art von Throttling möchte ich. Es hätte auch eine einfache Möglichkeit, Ressourcen automatisch in verschiedene Formate auszugeben (ohne Vorlage) und Streaming und Benachrichtigungen über webhooks und/oder PubSubHubBub sowie effizientes Caching bereitzustellen.

Idealerweise könnte ich dies auf ActiveRecord setzen, ohne dass ich ActionController benötige, also könnte ich eine kleine API-App haben.

Ich weiß, es gibt etwas in dieser Richtung für Django namens django-piston, aber ich habe es nicht selbst verwendet und ich bin mir nicht sicher, wie viel von dem oben genannten es abdeckt.

Gibt es in Rails so etwas? Oder bin ich völlig fehlgeleitet, dies zu wollen (und warum?) Und sollte stattdessen dieses Bedürfnis mit Vanilla Rails plus einer Handvoll Plugins füllen (welche?)?

+0

Auf der Seite "sollte man einfach Rails + plugins verwenden" habe ich diesen tollen Artikel über den Ansatz gefunden: http: // www.codesopretty.com/rails/plugin-synergy-for-rails-powered-apis/ – hsribei

+0

Wenn Ihre API mehr als nur einen Einstiegspunkt-URI enthält, handelt es sich nicht um REST. REST-APIs beschreiben nur Ihre Medientypen. Ihre Endpunkt-URIs müssen über Hypertext erkennbar sein. Es ist in Ordnung, wenn dies nicht das ist, was Sie wollen, aber bitte verwenden Sie nicht den Begriff "REST", wenn es nicht das ist, was Sie meinen. – aehlke

Antwort

0

CloudKit könnte eine Lösung sein. Hab noch nicht viel reingeschaut, aber von der Webseite:

# Build an API like this 
require 'cloudkit' 
expose :notes, :projects 
+0

Nicht wirklich wonach ich gesucht habe. CoudKit ähnelt eher einer HTTP-Front zum Speichern. Teile davon könnten aber helfen. – hsribei