Rails 有没有可能两个 Rails 之间通过 RESTful 的 API 进行通信?

wfwdex · 2016年09月20日 · 最后由 lithium4010 回复于 2018年08月07日 · 3376 次阅读

一个 rails app 只用来提供 API 另一个 rails 用来呈现和操作数据

使用 vue 或 react 有一些学习成本,有没有相关的解决方案或者 Gems?


2016-11-24
发现个阿里的开源实现 https://github.com/alibaba/otter 目前正在研究这个

2016-12-14
又发现个商业软件,是用来远程同步数据库的 http://www.pervasync.com/ ,支持子集同步,差异冲突处理,断线重连等。

或者我需要由一个 rails app 向远程服务器的另一个 rails app 同步数据(或者是 after_create 触发)向另一台服务器的 rails app 提交新创建的数据,除了用 restful api 来 post 数据,有没有别的方案?

有一个主 rails 应用,专门提供 API,然后有几台子 rails 应用分布在远程不同的服务器上, 当子 rails 有数据创建时,就提交到主 rails 应用,同时主 rails 负责把新创建的数据同步到别的子 rails 应用上去。

#2 楼 @wfwdex 不同应用的数据库不共享吗?这种数据同步方法效率太低了

建议提供 API 的 rails 就不要做了,直接用 postgrest 把数据库转成 api

想法是没错。但是既然把数据拆分出来了就尽量别用 Rails 做数据这一块了。呆过大公司的为数不多用 ruby 开发的部门表示,Rails 基本就只负责整理各个 API 传来的数据,专注做 UI。这个时候其实相当于把 active_record 的功能用 httpclient+cache 来代替掉。

#3 楼 @alucardpj 谢谢回复,也不是同步全部数据,可能只会同步两个表。 #4 楼 @Rei 谢谢回复,我看看这个文章。 #5 楼 @nouse 谢谢回复,请问 mysql 有没有相关方法?另外这种方法能不能做认证,因为这是在公网上公开的。 #6 楼 @gyorou 谢谢回复,请问 httpclient+cache 是指用什么来做?

一个 api 服务,另一个用 http client 直接访问数据,或者封装一下访问客户端,或者参考 active resource(github master 分支兼容 rails5)

可以看看 activeresource

#8 楼 @as181920 非常感谢,ActiveResource 似乎正是我需要的,将 RESTful 资源映射成为 Rails 模型,我来研究下。

不要这样做,这样相当于脱裤子放屁。只提供数据展示的 app,不需要 rails 这么重的框架

#13 楼 @u1440247613 其实我上面说过,不只是数据展示,还有数据操作,就是一个正常的后台管理系统,只不过前后端要分离了

需求描述不精确,不是很清楚你面对的场景到底是什么。 多层 HTTP API 的架构是可以,但我觉得你应当视情况考虑 SOA 以及 RPC。 当然,到底为什么要分库,在我看来也是一个值得深刻思考的问题。

activeresource 的 README 写的并不充分,初用起来遇到很多问题最好看了些源码后才明白如何使用。和 AR 的默认使用方式有些不同。

#17 楼 @as181920 我试用了一下 activeresource 后发现确实问题不少,最后还是决定自己写接口和调用了

#18 楼 @wfwdex 自己写个客户端其实很灵活好用,就是只解析到 json 的话,没法用 Rails 自带的 form helper 等。

发现如果上下游都自己写,follow rails rest 的思路的话,activeresource 很不错的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号