加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在ruby on rails上的另一个应用程序中调用一个应用程序中的

发布时间:2020-12-16 21:00:05 所属栏目:百科 来源:网络整理
导读:我想调用该方法并从我的应用程序中获取 Ruby on Rails技术中的另一个应用程序的响应,但是这里存在跨站点脚本问题.所以,我可以解决这个问题,请帮助我,这将是伟大的. http://video_tok.com/courses/get_course def get_course @course = Course.find(params[:i
我想调用该方法并从我的应用程序中获取 Ruby on Rails技术中的另一个应用程序的响应,但是这里存在跨站点脚本问题.所以,我可以解决这个问题,请帮助我,这将是伟大的.

http://video_tok.com/courses/get_course

def get_course
  @course = Course.find(params[:id])
end

现在我想从这个在edupdu.com域中运行的应用程序调用上面的方法

http://edupdu.com/call_course_method

def call_course_method
  @course = redirect_to "http://video_tak.com/courses/get_course/1"
end

但它会重定向到video_tak.com应用程序.
我想调用get_course方法并在内部获取@course对象而不重定向到另一个站点.

提前致谢.

解决方法

跨域AJAX确实是一个问题,但没有一个无法解决.在你的get_course方法中,你可以将课程对象作为JSON响应返回,如下所示:
render json: @course

从那里你可以通过JavaScript(AJAX)检索课程,在这里你应该使用JSONP或通过发出HTTP GET请求在Rails中.

> AJAX与JSONP

有JSONP(带填充的JSON),这是一种JavaScript程序的通信技术,用于提供从不同域中的服务器请求数据的方法.看着
jQuery.getJSON()的文档并向下滚动到JSONP部分.

If the URL includes the string "callback=?" (or similar,as defined by
the server-side API),the request is treated as JSONP instead. See the
discussion of the jsonp data type in $.ajax() for more details.

> HTTP GET请求

只需使用Net :: HTTP类:

require 'net/http'
require 'json'

url = URI.parse('http://video_tak.com/courses/get_course/1')
req = Net::HTTP::Get.new(url.to_s)
res = Net::HTTP.start(url.host,url.port) do |http|
  http.request(req)
end
course_json = JSON.parse(res.body)

如果您为模型提供了将JSON转换为您的域对象的方法,则可以从那里获取它.

RPC

您也可以使用RPC来调用不同Ruby进程之间的方法,尽管我建议这一点至少我不想省略它.有几个远程过程调用(RPC)库. Ruby标准库提供了DRb,但也有基于Ruby on Rails的实现,例如rails-xmlrpc gem允许您基于XML-RPC协议实现RPC或使用JSON与json-rpcj的替代协议

在搜索Rails RPC时,您可能会发现更多的库.从您选择的任何库中,具体的解决方案都会有所不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读