Ruby: PUT Request с корпусом JSON?
Мне нужно создать запрос HTTP PUT с помощью ruby.
Запрос имеет тело JSON
Мне удалось создать тело JSON, используя:
require 'rubygems'
require 'json'
jsonbody = JSON.generate["message"=>"test","user"=>"user1"]
Мне нужно отправить этот запрос PUT на URL:
require 'open-uri'
url = URI.parse('http://www.data.com?access_token=123')
Может кто-нибудь, пожалуйста, скажите мне, как я могу это сделать в Ruby?
Ответы
Ответ 1
Используя restclient (gem install rest-client), выполните следующие действия:
require 'rubygems'
require 'rest_client'
require 'json'
jdata = JSON.generate(["test"])
RestClient.put 'http://localhost:4567/users/123', jdata, {:content_type => :json}
в отношении следующей службы sinatra:
require 'sinatra'
require 'json'
put '/users/:id' do |n|
data = JSON.parse(request.body.read)
"Got #{data} for user #{n}"
end
работает на моем компьютере.
Ответ 2
Самый простой способ - Net::HTTP
:
require 'net/http'
http = Net::HTTP.new('www.data.com')
response = http.request_put('/?access_token=123', jsonbody)