Sinatra POST里面的Ruby Http gem(http客户端)

时间:2017-08-10 04:17:57

标签: ruby sinatra

我正在尝试中继GET请求,以便当用户向服务器发出POST请求时,服务器会对其他某个URL执行另一个GET请求并返回结果。

问题在于,当我使用puts打印结果时,我看到了我期待的正确结果,但最后一行(我相信函数的最后一行自动返回的ruby)没有响应POST请求(它返回空响应)。来自JavaScript我相信它正在进行异步GET调用,并且POST响应不会等到GET客户端完成。

任何帮助都将不胜感激。

require 'rubygems'
require 'sinatra'
require "http"

my_app_root = File.expand_path( File.dirname(__FILE__) + '/..' )

set :port, 80
set :bind, '0.0.0.0'
set :public_dir,   my_app_root + '/public'


post "/weather" do
  puts HTTP.get('https://www.metaweather.com/api/location/search/?query=milwaukee')  # prints correct result
  HTTP.get('https://www.metaweather.com/api/location/search/?query=milwaukee')       # response of POST method is empty string!
end

1 个答案:

答案 0 :(得分:2)

的更改
HTTP.get

HTTP::Response方法返回String个对象而不是 res = [res] if Integer === res or String === res if Array === res and Integer === res.first res = res.dup status(res.shift) body(res.pop) headers(*res) elsif res.respond_to? :each body res end nil # avoid double setting the same response tuple twice 个对象。

从源代码中只能返回特定类型的对象。

 1. npm install --save font-awesome

 2. Import it to my jsx file

 import '../../../../../../node_modules/font-awesome/css/font-awesome.min.css';

 3. Adding url-loader to my webpack.config.js 

            {
                test: /\.(woff|woff2|eot|ttf)(\?.*$|$)/,
                loader: 'url-loader?limit=100000'
            }