如何使用ruby gem发送DELETE请求?

时间:2013-02-05 10:09:07

标签: ruby httprequest curb

我正在与需要使用JSON正文的DELETE请求的API进行通信。这适用于控制台:

curl -XDELETE http://api.com/endpoint_path/rest_resource -d '{"items":[{"type":"type1","item_id":"item1"}]}'

似乎大多数用于发出HTTP请求的gem都不支持带有body的DELETE请求(我试过RestClient和Curb)。有没有办法使用一些Ruby gem(最好是Curb)或Net :: HTTP?

3 个答案:

答案 0 :(得分:6)

以下是使用HTTParty的一种方式:

HTTParty.delete("http://api.com/endpoint_path/rest_resource", { 
  :body => '{"items":[{"type":"type1","item_id":"item1"}]}'
})

答案 1 :(得分:0)

可以用她。这是api的ORM。 https://github.com/remiprev/her

使用示例:

RestResource.destroy_existing(id, body_params)

答案 2 :(得分:0)

我在这个问题上也花了一些时间,@ Casper的答案为我们提供了启示。

在我看来,关键是将主体值作为JSON字符串传递,这在我发现的大多数文档中都没有写。

这是使用httpclient

的另一个示例
require 'json'
body = { 'items': [{ 'type': 'type1', 'item_id': 'item1' }]}
HTTPClient.new.delete('http://api.com/endpoint_path/rest_resource', body.to_json)