Как отправить запрос DELETE с телом, используя ruby ​​gem?

Я общаюсь с API, который требует запроса DELETE с телом JSON. Это работает на консоли:

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

Похоже, что большинство гемов для выполнения HTTP-запросов не поддерживают запрос DELETE с телом (я пробовал RestClient и Curb). Есть ли способ сделать это с помощью Ruby gem (желательно Curb) или Net::HTTP?


person Lukas Stejskal    schedule 05.02.2013    source источник


Ответы (3)


Вот один из способов использования HTTParty:

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

ее можно было использовать. Это ORM для API. https://github.com/remiprev/her

Пример использования:

RestResource.destroy_existing(id, body_params)
person gayavat    schedule 02.12.2015

Я также потратил некоторое время на эту проблему, и ответ @Casper пролил свет.

Мне кажется, что ключевым моментом является передача значения тела в виде строки JSON, что не написано в большинстве документов, которые я нашел.

Вот еще один пример использования https://github.com/nahi/httpclient.

require 'json'
body = { 'items': [{ 'type': 'type1', 'item_id': 'item1' }]}
HTTPClient.new.delete('http://api.com/endpoint_path/rest_resource', body.to_json)
person Dapeng Li    schedule 08.02.2019