rethinkdb を使用して REST API サービスを作成したい場合 - Horizon はまだ価値を追加しますか
いいえ、CRUD 操作を RethinkDB データにマッピングする REST API エンドポイントだけが必要な場合、Horizon は役に立ちません。
「リアルタイム」機能を備えた websocket API が必要で、ブラウザーで Horizon クライアントを使用する予定がある場合、Horizon は最適です。
Horizon は、ユーザーとパーミッションを処理する方法について独自の意見を持っています (RethinkDB ユーザー テーブルの代わりに、アプリごとに異なるユーザー/パーミッションを使用して、サーバー側でそれらを適用します)。
# 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')
私は現在、フェザーを使用して、REST または Websocket トランスポートを介して公開できる共通サービスを設計するスタックをいじっています。より複雑ですが、フェザーと Horizon の両方を使用する可能性がありますが、両方のエンドポイント間でアクセス許可を正しくマップするための作業が必要です。(さらにスキーマの適用...) Feathers は、Horizon に渡すことができる JWT を返すさまざまな認証プロバイダーをサポートしています (同じ secret_key を設定した場合)...
データベースにリアルタイム機能が必要ない場合は、すぐに使用できる JWT 認証があり、行レベルの承認に実際のデータベース ロールを使用するPostgRESTを確認することをお勧めします。「真実の唯一の情報源」。REST と GraphQL の両方が必要な場合は、PostGraphQL と一緒に使用できます。さらに、最近では JSON データを列に格納できるので、すべてが優れています。
非常に多くのオプション!
幸運を!