用于GET,POST,PUT,DELETE的Net :: HTTP的Ruby示例

时间:2014-10-10 18:42:40

标签: ruby net-http

我第一次尝试学习Ruby。我有一些PHP和PHP的经验,我做了像

这样的功能
function call_api(endpoint,method,arr_parameters='')
{
 // do a CURL call
}

我会使用

call_api('https://api.com/user','get','param=1&param=2');
call_api('https://api.com/user/1','get');
call_api('https://api.com/user/1','post','param=1&param=2');
call_api('https://api.com/user/1','put','param=1&param=2');
call_api('https://api.com/user/1','delete');

到目前为止,我只学会了如何使用Ruby进行GET和POST调用:

  conn = Net::HTTP.new(API_URL, API_PORT)
  resppost = conn.post("/user", 'param=1', {})
  respget = conn.get("/user?param=1",{})

但我不知道如何删除和放置。有人可以显示删除的示例代码并使用Net :: HTTP对象进行调用吗?

4 个答案:

答案 0 :(得分:3)

我喜欢法拉第宝石。我发现它的设计最简单。

gem install faraday require 'faraday'可以result = Faraday.get('http://google.es') 完成:

Faraday.delete('http://google.es')
Faraday.post('http://google.es', {some_parameter: 'hello'})

您还可以发布,删除,删除等

{{1}}

项目:https://github.com/lostisland/faraday

答案 1 :(得分:2)

你只需命名它:

Net::HTTP::Put.new(uri)

与删除相同:

Net::HTTP::Delete.new(uri)

您甚至可以使用现有的通话执行此操作:

conn = Net::HTTP.new(uri)
con.get(path)

相当于:

Net::HTTP::Get.new(uri)

答案 2 :(得分:1)

对于DELETE,您可以使用conn.delete("/user/1", {})

request = Net::HTTP::Delete.new("/user/1")
response = conn.request(request)

对于PUT,

response = http.set_request('PUT', "/user/1", "param=1") 

Net::HTTP::Put.new(path)

答案 3 :(得分:1)

我可以建议您查看httparty吗?他们在他们的页面上提供了一些非常棒的例子来完成您想要做的事情。

response = HTTParty.get('https://api.stackexchange.com/2.2/questions?site=stackoverflow')

puts response.body, response.code, response.message, response.headers.inspect

还有更多调用不同端点的例子。