Ruby on rails 使用PUT方法的查询服务器
我将替换我的命令行Ruby on rails 使用PUT方法的查询服务器,ruby-on-rails,ruby,http,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
`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'))
感谢您的回复#get
只是整个代码的一个简单快捷方式(Net::HTTP
Ruby库往往非常冗长)。然而
另一种选择是使用HTTP客户机作为包装器。最常见的选择是和
作为旁注,请记住Rails是一个框架,而不是一种编程语言。您的问题是如何在Ruby而不是Rails中执行HTTP PUT请求。理解差异很重要。您可以使用发送任何标准http请求 下面是一种方法,您可以使用任何有效的http方法(带或不带参数)连接到任何url(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
也有许多可供选择的方案。明确地另外,在做出选择之前。您是否尝试过这样做?
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