rethinkdb horizon 是否非常适合休息 api 网络服务?
is rethinkdb horizon well suited for a rest api web service?
我看到 rethinkdb 现在有一个名为 horizon 的应用程序服务器,它的示例包括许多没有任何后端服务器代码的客户端应用程序。
如果我想用 rethinkdb 创建一个 REST api 服务 - horizon 是否仍然增加价值,或者我应该直接使用 rethinkdb 库创建一个标准 node.js rest api?
我看到 horizon 内置了一些可能有用的身份验证、授权和权限,但我不确定将它变成 api 而不是标准的网络应用程序是否会使 horizon 弯曲成某种东西它不应该是。
您可以将 Horizon 嵌入到节点应用程序中,并且仅使用其功能的子集: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 数据存储在列中,所以一切都很好!
这么多选择!
祝你好运!
我看到 rethinkdb 现在有一个名为 horizon 的应用程序服务器,它的示例包括许多没有任何后端服务器代码的客户端应用程序。
如果我想用 rethinkdb 创建一个 REST api 服务 - horizon 是否仍然增加价值,或者我应该直接使用 rethinkdb 库创建一个标准 node.js rest api?
我看到 horizon 内置了一些可能有用的身份验证、授权和权限,但我不确定将它变成 api 而不是标准的网络应用程序是否会使 horizon 弯曲成某种东西它不应该是。
您可以将 Horizon 嵌入到节点应用程序中,并且仅使用其功能的子集: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 数据存储在列中,所以一切都很好!
这么多选择!
祝你好运!