rethinkdb horizo​​n 是否非常适合休息 api 网络服务?

is rethinkdb horizon well suited for a rest api web service?

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

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

我看到 horizo​​n 内置了一些可能有用的身份验证、授权和权限,但我不确定将它变成 api 而不是标准的网络应用程序是否会使 horizo​​n 弯曲成某种东西它不应该是。

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

就我个人而言,如果您只是为了身份验证而嵌入它,我怀疑它会带来更多的麻烦。

If I wanted to create a REST api service with rethinkdb - does horizon still add value

不,如果您只需要一个 REST API 端点将 CRUD 操作映射到您的 RethinkDB 数据,那么 Horizon 将无济于事。

Horizon 如果您想要 websocket API w/ "real-time" 功能并计划在浏览器中使用 Horizon 客户端,那么

Horizon 很棒。

Horizon 在处理用户和权限方面固执己见(它在服务器端对每个应用程序使用不同的 users/permissions 而不是 RethinkDB 用户 table 来强制执行它们)。

# 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')

我目前正在研究一个堆栈,该堆栈使用 feathers 来设计可以通过 REST 或 websocket 传输公开的公共服务。它更复杂,但我可能会同时使用 feathers 和 Horizon,但需要做一些工作才能在两个端点之间正确映射权限。 (加上架构实施...)Feathers 支持各种身份验证提供程序 return JWT,然后您可以将其传递给 horizon(如果您设置相同的 secret_key)...

如果您不需要数据库中的 real-time 功能,您可能需要查看 PostgREST,因为它具有开箱即用的 JWT 身份验证,并在行级别使用实际的数据库角色授权。 "One source of truth"。如果您同时需要 REST 和 GraphQL,则可以将它与 PostGraphQL 一起使用!另外,这些天您可以将 JSON 数据存储在列中,所以一切都很好!

这么多选择!

祝你好运!