【问题标题】:is rethinkdb horizon well suited for a rest api web service?rethinkdb Horizo​​n 是否非常适合 Rest api Web 服务?
【发布时间】:2016-07-31 07:58:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: rethinkdb horizon


    【解决方案1】:

    如果我想用 rethinkdb 创建一个 REST api 服务 - Horizo​​n 仍然增值

    不,如果您只需要一个 REST API 端点将 CRUD 操作映射到您的 RethinkDB 数据,那么 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')
    

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

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

    这么多选择!

    祝你好运!

    【讨论】:

    • 经过更多挖掘后,将horizon 视为事实来源并在快速节点服务器中为 REST 端点使用 Horizo​​n 客户端实际上可能是有意义的。例如stackoverflow.com/questions/37402526/…
    • 我刚刚构建了一个粗略的示例,使用 Horizo​​n 来创建使用 RESTful CRUD API 和实时 websockets 传输的服务:github.com/ubergarm/stack-in-a-box
    【解决方案2】:

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

    我个人怀疑,如果您只是为了身份验证而嵌入它,那么麻烦会多过它的价值。

    【讨论】:

      猜你喜欢
      • 2016-09-21
      • 2017-07-28
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多