2016-07-21 9 views
3

Ich sehe, dass rethinkdb jetzt einen App-Server namens Horizon hat und es Beispiele sind viele Client-Anwendungen ohne Backend-Server-Code.ist rethinkdb Horizont gut geeignet für einen Rest api Web Service?

Wenn ich einen REST-API-Dienst mit rethinkdb erstellen wollte - fügt horizont noch einen Mehrwert hinzu, oder sollte ich einfach einen Standard-node.js-Rest-API mit rethinkdb-Bibliotheken direkt erstellen?

Ich sehe, dass Horizont einige Authentifizierung, Autorisierung und Berechtigungen eingebaut hat, die nützlich sein könnte, aber ich bin mir nicht sicher, wenn es in eine API anstelle einer Standard-Web-App verwandelt sich Horizont in etwas biegen, was es nicht sein soll .

Antwort

1

Wenn ich ein REST-API-Service mit rethinkdb schaffen wollte - tut Horizont noch Wert

Nein hinzufügen, wenn alles, was Sie wollen, dann CRUD-Operationen auf Ihre RethinkDB Daten, eine REST-API-Endpunkt-Mapping ist Horizon wird dir dort nicht helfen.

Horizon ist großartig, wenn Sie WebSocket-API mit "Echtzeit" -Funktionen verwenden möchten und den Horizon-Client im Browser verwenden möchten.

Horizon ist so ausgelegt, wie es Benutzer und Berechtigungen behandelt (es erzwingt sie auf der Serverseite mit verschiedenen Benutzern/Berechtigungen für jede App anstelle der RethinkDB-Benutzertabelle).

# RethinkDB 
r.db('rethinkdb').table('users') 
r.db('rethinkdb').table('permissions') 

# Horizon 
r.db('myapp_internal').table('users') 
r.db('myapp_internal').table('users_auth') 

ich zur Zeit das Spiel mit einem Stack, der feathers nutzt gemeinsame Dienste zu entwickeln, die über einen REST oder websocket Transport ausgesetzt werden kann. Es ist zwar komplexer, aber ich könnte sowohl Federn als auch Horizon verwenden, aber es wird etwas Arbeit sein, um Berechtigungen an beiden Endpunkten korrekt zuzuordnen. (Plus scheme enforcement ...) Feathers unterstützt verschiedene Authentifizierungsanbieter, die JWT zurückgeben, die Sie dann an horizon übergeben können (wenn Sie denselben secret_key setzen) ...

Wenn Sie die Echtzeitfunktionen nicht benötigen In Ihrer Datenbank möchten Sie möglicherweise PostgREST auschecken, da sie über eine JWT-Authentifizierung verfügt und tatsächliche Datenbankrollen für die Autorisierung auf Zeilenebene verwendet. "Eine Quelle der Wahrheit". Sie können das zusammen mit PostGraphQL verwenden, wenn Sie sowohl REST als auch GraphQL wollen! Außerdem können Sie JSON-Daten heutzutage in Spalten speichern, also ist alles gut!

So viele Optionen!

Viel Glück!

+0

Nach weiteren Ausgrabungen könnte es sinnvoll sein, Horizont als Quelle der Wahrheit zu behandeln und einen Horizont-Client in einem Express-Node-Server für REST-Endpunkte zu verwenden. z.B. http://stackoverflow.com/questions/37402526/rethinkdb-horizon-integration-with-express-access-horizon-data-server-side –

+0

Ich habe gerade ein grobes Beispiel der Verwendung von Horizon erstellt, um einen Dienst zu erstellen, der beide RESTful CRUD verwendet API- und Echtzeit-Websocket-Transporte: https://github.com/ubergarm/stack-in-a-box –

0

Sie können Horizon in eine Knoten-App einbetten und nur eine Teilmenge seiner Funktionen verwenden: http://horizon.io/docs/embed/. Sie sollten in der Lage sein, die Authentifizierung ziemlich einfach zu übernehmen. Wenn Sie eine eigene REST-API implementieren, ist es schwieriger, die Berechtigungen zu übernehmen, da das Berechtigungssystem nur den Zugriff auf Sammlungen steuert.

Persönlich vermute ich, es wird mehr Mühe als es wert ist, wenn Sie es nur für die Authentifizierung einbetten.