如果我想用 rethinkdb 创建一个 REST api 服务 - 地平线是否仍然增加价值
不,如果您想要的只是将 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 支持各种返回 JWT 的身份验证提供程序,然后您可以将其传递给 Horizon(如果您设置相同的 secret_key)......
如果您不需要数据库中的实时功能,您可能需要查看PostgREST,因为它具有开箱即用的 JWT 身份验证并使用实际数据库角色进行行级授权。“一个真理的来源”。如果你想要 REST 和 GraphQL,你可以将它与 PostGraphQL 一起使用!另外,这些天您可以将 JSON 数据存储在列中,所以一切都很好!
这么多选择!
祝你好运!