Ruby:带有 JSON 正文的 PUT 请求?
Posted
技术标签:
【中文标题】Ruby:带有 JSON 正文的 PUT 请求?【英文标题】:Ruby: PUT Request with JSON body? 【发布时间】:2011-06-13 08:22:47 【问题描述】:我需要使用 ruby 创建一个 HTTP PUT 请求。
请求具有 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)
【讨论】:
我收到错误:/usr/lib/ruby/1.8/net/http.rb:1060:inrequest': undefined method
closed?'对于 nil:NilClass (NoMethodError) 来自 /usr/lib/ruby/1.8/net/http.rb:996:in `request_put' 来自 json.rb:23以上是关于Ruby:带有 JSON 正文的 PUT 请求?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Rest Controller PUT 方法请求正文验证?
是否可以在 Axios 中发送带有 JSON 正文的 get 请求?
如何在 Restkit 中执行没有正文、url 参数的 PUT 请求并取回对象