node.js - 在 Nodejs 客户端发布请求正文中构造具有重复键的表单数据
问题描述
我正在尝试发出一个包含表单数据的发布请求。但是 API REST 规范说表单数据应该是这样的:
names[]= 公司名称 1&names[]= 公司名称 2
我试过了
form: {'names[]': "google" ,'names[]': "kraft", 'fields[]': "Country",
'fields[]':"ISIN"}
但服务器只接收第一个names[]
和fields[]
。第二个被剪掉了。
服务器:发布数据:{"names"=>["kraft"], "fields"=>["ISIN"]}
然后我尝试将数组添加为值:
form: {'names[]': ["google", "kraft"], 'fields[]': ["Country","ISIN"] }
服务器:发布数据:{"names"=>[{"0"=>"google", "1"=>"kraft"}], "fields"=>[{"0"=>"Country", " 1"=>"ISIN"}]}
查看服务器请求,我看到它接受这种格式的正文:
BODY: names[]=google&names[]=kraft&fields[]=ISIN&fields[]=Country
但我不能在我的节点客户端构建这种形式。
我正在使用这个库:https ://www.npmjs.com/package/request
*********编辑*********
这个居然醒了:
form: "names[]=google&names[]=kraft&fields[]=Country&fields[]=ISIN"
现在的问题是如何使用https://github.com/form-data/form-data形成这个字符串
我试过没有附加不起作用。
解决方案
建议键是唯一的,并且在其命名中没有括号。在您的情况下, names[] 和 fields[] 重复自己
const form = {
form: {
names: ['google', 'kraft'],
fields: ['Country', 'ISIN']
}
};
request.post('http://yourwebsite.com', form);
编辑
names[]=google&names[]=kraft&fields[]=ISIN&fields[]=Country
可能有效,但根据框架/语言,只会考虑一个条目(第一个或最后一个)。所以它相当于
names[]=google&fields[]=ISIN // considering first are chosen
同样如您所见
服务器:发布数据:{"names"=>["kraft"], "fields"=>["ISIN"]}
括号被过滤掉了,所以这又是同一件事
names=google&fields=ISIN // considering first are chosen
推荐阅读
- javascript - 更新 redux 状态
- database - 更新操作失败“操作必须使用可更新查询。(错误 3073)”
- c++ - Protobuf 在初始化时崩溃
- matplotlib - Matplotlib 不会绘制某些数据..尽管 scatter 有效
- c# - 不断收到 System.IndexOutOfRangeException: 'Index was outside the bounds of the array。'
- python - Python数据帧到csv - 用于分隔列的数组元素
- command-prompt - 必须在一个命令提示符下使用 cmd
- modbus - OpenHAB2访问MODBUS RTU从设备
- java - 将客户端 android 相机流式传输到 android 服务器
- c# - 使用 WebBrowser 的窗体控件库在 Windows 窗体中生成属性窗格