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

wfwdex · September 20, 2016 · Last by lithium4010 replied at August 07, 2018 · 3374 hits

一个 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 很不错的

You need to Sign in before reply, if you don't have an account, please Sign up first.