我看到rethinkdb现在有一个名为horizon的应用服务器,它的例子包括许多没有任何后端服务器代码的客户端应用程序。
如果我想用rethinkdb创建一个REST api服务 - 地平线是否还能增加价值,还是应该直接使用rethinkdb库创建一个标准的node.js rest api?
我看到地平线有一些内置的身份验证,授权和权限可能很有用但我不确定是否将其转换为api而不是标准的Web应用程序正在使地平线弯曲成不应该的东西。
答案 0 :(得分:1)
如果我想用rethinkdb创建一个REST api服务 - 那么视野 仍然增加价值
不,如果你想要的是一个REST API端点,将CRUD操作映射到你的RethinkDB数据上,那么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')
我目前正在玩一个使用feathers来设计可以通过REST或websocket传输公开的公共服务的堆栈。它更复杂,但我可能同时使用羽毛和Horizon,但是会有一些工作在两个端点上正确映射权限。 (加上模式实施......)Feathers支持返回JWT的各种身份验证提供程序,然后您可以将其传递给地平线(如果设置相同的secret_key)...
如果您不需要数据库中的实时功能,则可能需要查看PostgREST,因为它具有开箱即用的JWT身份验证,并使用实际的数据库角色进行行级别授权。 “一个真相来源”。如果你想要REST和GraphQL,你可以将它与PostGraphQL一起使用!此外,您现在可以将JSON数据存储在列中,这样一切都很好!
这么多选择!
祝你好运!答案 1 :(得分:0)
您可以在节点应用中嵌入Horizon,并仅使用其功能的子集:http://horizon.io/docs/embed/。您应该能够轻松地依赖身份验证。如果您正在实施自己的REST API,那么捎带权限将更加困难,因为权限系统仅控制对集合的访问。
就我个人而言,如果您只是为了身份验证而嵌入它,那么我怀疑它会比它的价值更大。