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!
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 –
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 –