我用Ruby为PUT请求创建了主体。当我打印出身体时,我看不到任何问题。但是,当我尝试从实际的PUT请求中打印出正文时,我开始收到错误消息。
详细来说,这是我的代码:
@data={param1: "nameserver",
param2: {code: "XYZ", name: "NAME", start: "2017"}}
puts "data = #{@data} " #This works fine
@putResponse = HTTParty.put(base_url,
:body => @data.to_json,
:headers => header)
puts "putResponse.body is #{@putResponse.body}" #This is where I get the error
如您所见,行puts "data = #{@data} "
正常工作。它打印出
data = {:param1=>"nameserver", :param2=>{:code=>"XYZ", :name=>"NAME", :start=>"2017"}}
但是该行放置puts "putResponse.body is #{@putResponse.body}"
不起作用。它是打印出来的:
putResponse.body is {"errors":[{"message":"The specified resource does not exist."}],"error_report_id":443}
那么这是什么问题? (我正在使用HTTParty发出我的PUT请求)
编辑:
这是我获得主机和标头的方式:
config = JSON.parse(File.read('config.json'))
puts "config: #{config}"
access_token = config['canvas']['access_token']
puts "access_token: #{access_token}"
host = config['canvas']['host']
puts "host: #{host}"
base_url = 'http://#{host}/api/v1/users/self/custom_data/program_of_study'
puts "base_url: #{base_url}"
header = {'Authorization': 'Bearer ' "#{$access_token}", "Content-Type" => 'application/json', 'Accept' => 'application/json'}
答案 0 :(得分:0)
在Sinatra中处理this.setState(prev =>
({
[day]: {
...prev[day],
[type]: value
}
})
)
与处理PUT
类似,这就是文档在这方面可能稀缺的原因。
这是Sinatra端点从POST
请求中接收PUT
个参数的简单示例:
curl
并使用以下curl命令对其进行测试:
# server.rb
require 'sinatra'
put '/' do
params.inspect
end
$ curl -X PUT -d n=hello http://localhost:4567/
哈希将可在任何Sinatra端点内使用,包括任何HTTP方法接收的参数。
作为对您的评论的回应,如果不查看整个代码就很难调试。 我建议您运行此答案中提供的测试,并逐步对其进行修改以适合您的实际代码,以了解有什么问题。
运行以上params
时,以下测试可以正常运行:
server.rb