3

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

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

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

4

3 回答 3

6

这是使用HTTParty的一种方法:

HTTParty.delete("http://api.com/endpoint_path/rest_resource", { 
  :body => '{"items":[{"type":"type1","item_id":"item1"}]}'
})
于 2013-02-05T10:23:49.463 回答
0

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

使用示例:

RestResource.destroy_existing(id, body_params)
于 2015-12-02T10:37:50.873 回答
0

我也花了一些时间在这个问题上,@Casper 的回答阐明了这一点。

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

这是另一个使用httpclient的示例

require 'json'
body = { 'items': [{ 'type': 'type1', 'item_id': 'item1' }]}
HTTPClient.new.delete('http://api.com/endpoint_path/rest_resource', body.to_json)
于 2019-02-08T14:13:21.943 回答