3

我看到 rethinkdb 现在有一个名为 Horizo​​n 的应用服务器,它的示例包括许多没有任何后端服务器代码的客户端应用程序。

如果我想用 rethinkdb 创建一个 REST api 服务——horizo​​n 是否仍然增加价值,或者我应该直接使用 rethinkdb 库创建一个标准的 node.js rest api?

我看到 Horizo​​n 内置了一些身份验证、授权和权限,这可能很有用,但我不确定将其转换为 api 而不是标准的 Web 应用程序是否会使 Horizo​​n 变成不应该的东西。

4

2 回答 2

1

如果我想用 rethinkdb 创建一个 REST api 服务 - 地平线是否仍然增加价值

不,如果您想要的只是将 CRUD 操作映射到您的 RethinkDB 数据的 REST API 端点,那么 Horizo​​n 将无法帮助您。

如果您想要具有“实时”功能的 websocket API 并计划在浏览器中使用 Horizo​​n 客户端,那么 Horizo​​n 非常棒。

Horizo​​n 在如何处理用户和权限方面固执己见(它在服务器端使用每个应用程序的不同用户/权限而不是 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 传输公开的通用服务。它更复杂,但我可能会同时使用羽毛和 Horizo​​n,但需要做一些工作才能在两个端点之间正确映射权限。(加上模式强制......)Feathers 支持各种返回 JWT 的身份验证提供程序,然后您可以将其传递给 Horizo​​n(如果您设置相同的 secret_key)......

如果您不需要数据库中的实时功能,您可能需要查看PostgREST,因为它具有开箱即用的 JWT 身份验证并使用实际数据库角色进行行级授权。“一个真理的来源”。如果你想要 REST 和 GraphQL,你可以将它与 PostGraphQL 一起使用!另外,这些天您可以将 JSON 数据存储在列中,所以一切都很好!

这么多选择!

祝你好运!

于 2016-07-30T23:58:19.023 回答
0

您可以将 Horizo​​n 嵌入到节点应用程序中,并且只使用其功能的子集:http ://horizo​​n.io/docs/embed/ 。您应该能够很容易地搭载身份验证。如果您要实现自己的 REST API,则很难捎带权限,因为权限系统只控制对集合的访问。

就我个人而言,我怀疑如果您只是为了身份验证而嵌入它,这将比它的价值更麻烦。

于 2016-07-21T19:53:56.290 回答