使用PUT方法查询服务器

时间:2014-01-24 11:29:46

标签: ruby-on-rails ruby http

我将替换我的命令行

`curl -XPUT 'host:port/url' -d '{"val": "some_json"}'̀ 

通过Rails命令,得到结果......

在这样的地方:

response = call('put', 'host:port/url', '{"val" : "some_json"}')

是否有任何预定义的方法在Rails或某些gem中执行此操作? 我知道HTTP的命令get,但我会做一个'PUT'方法。

Net::HTTP.get(URI.parse('host:port/url'))

感谢您的回复

2 个答案:

答案 0 :(得分:1)

您可以使用Net::HTTP发送任何标准的http请求。

这是一种方法,您可以使用任何有效或无参数的http方法连接到任何网址(http / https)。

def universal_connector(api_url, api_parameters={}, method="Get")
  # Do raise Error, if url is invalid and Method is invalid

  uri = URI(api_url)
  req = eval("Net::HTTP::#{method.capitalize}.new('#{uri}')")
  req.set_form_data(api_parameters)                                                                                                    
  Net::HTTP.start(uri.host, uri.port,:use_ssl => uri.scheme == 'https') do |http|
   response = http.request(req)
     return response.body
  end
end

还有许多其他选择。具体而言,Faraday。此外,read this在做出选择之前。

答案 1 :(得分:0)

#get只是整个代码的简单快捷方式(Net::HTTP Ruby库往往非常冗长)。但是,Net::HTTP perfectly supports PUT requests

另一种方法是使用HTTP客户端作为包装器。最常见的替代方案是HTTPartyFaraday

HTTParty.put('host:port/url', { body: {"val" : "some_json"} })

作为旁注,请记住Rails是一个框架,而不是一种编程语言。您的问题是如何在Ruby中执行HTTP PUT请求,而不是Rails。了解差异非常重要。