我看到rethinkdb现在有一个名为horizon的应用程序服务器,其示例包括许多没有任何后端服务器代码的客户端应用程序。
如果我想使用rethinkdb创建REST api服务-地平线是否仍会增加价值,还是应该直接使用rethinkdb库创建标准的node.js rest api?
我看到horizon内置了一些身份验证,授权和权限,这些功能可能很有用,但是我不确定是否将其转变为api(而不是标准的Web应用程序)是否会使horizon变成了原本不应该的东西。
最佳答案
如果我想使用rethinkdb创建REST api服务-地平线
仍然增加价值
不,如果您只需要一个将CRUD操作映射到RethinkDB数据上的REST API终结点,那么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数据存储在列中,因此一切都很好!
这么多的选择!
祝好运!
关于rethinkdb - rethinkdb horizon是否非常适合其他api Web服务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38504360/