我将替换我的命令行
`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'))
感谢您的回复
答案 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
答案 1 :(得分:0)
#get
只是整个代码的简单快捷方式(Net::HTTP
Ruby库往往非常冗长)。但是,Net::HTTP
perfectly supports PUT
requests。
另一种方法是使用HTTP客户端作为包装器。最常见的替代方案是HTTParty和Faraday。
HTTParty.put('host:port/url', { body: {"val" : "some_json"} })
作为旁注,请记住Rails是一个框架,而不是一种编程语言。您的问题是如何在Ruby中执行HTTP PUT请求,而不是Rails。了解差异非常重要。