【发布时间】:2019-10-28 11:40:05
【问题描述】:
我想将哈希:{"key1"=>"value1", "key2"=>"value2"} 转换为如下所示的字符串:'[{"key1" : "value1","key2" : "value2"}]'
背景:我正在从我的 rails 控制器进行 API 调用。
此请求的 curl 等效项是 curl -X POST -H 'Content-Type: application/json' -i 'valid_uri' --data '[{"key1" : "value1","key2" : "value2"}]'
因此,要将其转换为 ruby,我尝试了以下方法:
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse(VALID_URI)
header = {'Content-Type' => 'application/json'}
data = {"key1"=>"value1", "key2"=>"value2"}
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.request_uri, header)
request.body = Array.wrap(data1.to_s.gsub('=>',':')).to_s
response = http.request(request)
但是,request.body 的格式与 curl 请求中的数据格式不匹配,导致 Net::HTTPBadRequest 400 Bad Request
有人可以解释我如何实现这一目标吗? TIA
【问题讨论】:
标签: ruby ruby-on-rails-5 net-http