ruby-on-rails - Ruby 使用对象数组进行 put / post http 调用
问题描述
我有这个 http 调用代码,类型是表单
param = {
form: {
"creatives[]" => [
{
is_visible: params[:creative_banner_is_visible],
type: "banner",
value_translations: {
id: params[:creative_banner_value_id],
en: params[:creative_banner_value_en]
}
},
{
is_visible: params[:creative_video_is_visible],
type: "video",
value_translations: {
id: params[:creative_video_value_id],
en: params[:creative_video_value_en]
}
}
]
}
}
http = HTTP.headers(headers)
http.put(base_url, param)
但不知何故,这在目标服务器上被翻译成这个
"creatives"=>[
"{:is_visible=>\"true\", :type=>\"banner\", :value_translations=>{:id=>\"Banner URL ID\", :en=>\"Banner URL EN\"}}",
"{:is_visible=>\"true\", :type=>\"video\", :value_translations=>{:id=>\"12345ID\", :en=>\"12345EN\"}}"
]
你知道如何使这个 http 调用不被字符串化吗?我在邮递员上使用了相同的模式并且工作得很好
"creatives": [
{
"is_visible": true,
"type": "banner",
"value_translations": {
"id": "http://schroeder.info/elinore",
"en": "http://wehner.info/dusti"
}
},
{
"is_visible": true,
"type": "video",
"value_translations": {
"id": "85177e87-6b53-4268-9a3c-b7f1c206e002",
"en": "5134f3ca-ead7-4ab1-986f-a695e69ace96"
}
}
]
我正在使用这个 gem https://github.com/httprb/http
解决方案
编辑
首先,将您的替换"creatives[]" => [ ...
为,creatives: [ ...
因此最终结果应如下所示。
creatives = [
{
is_visible: params[:creative_banner_is_visible],
type: "banner",
value_translations: {
id: params[:creative_banner_value_id],
en: params[:creative_banner_value_en]
}
},
{
is_visible: params[:creative_video_is_visible],
type: "video",
value_translations: {
id: params[:creative_video_value_id],
en: params[:creative_video_value_en]
}
}
]
http = HTTP.headers(headers)
http.put(base_url, creatives.to_json)
其次,我认为您在目标服务器中获得的内容没有任何问题,您只需将其解析为 JSON,因此如果您还有一个 Rails 应用程序可以JSON.parse
在主体上使用。
推荐阅读
- javascript - Javascript 确认消息条件
- reactjs - ReactJS 如何在 App.js 中主动向组件传递状态值
- php - 图像未在 Codeigniter 中显示
- actions-on-google - 是否可以在 Google Smart Home 中实现自定义意图?
- sonarqube - 具有新分支功能的 SonarQube 因“只能为特定组件设置一次度量”而失败?
- warnings - Microsoft bot - 为什么某些 bot 示例禁用警告 1998
- sql - SQL 查询来计算记录
- swift - 导航栏中的 Stackview
- python - 如何限制张量流内存使用?
- angularjs - 我正在尝试使用 angularjs 1.6.5 将文件上传到 Django 服务器。我无法使用 $http.patch 方法上传文件