问题:上周开发时遇到了表单参数需要指定 content-type的情况,后端同时接收文件 和 json 对象
参数图:

使用工具可以正常调用接口,
仅为生成的示例代码有问题
生成的js、node 示例代码
const form = new FormData(); form.append("file", "[object Object]"); form.append("data", "{\"beanColumns\":[\"活动名称\"],\"customFields\":[{\"sort\":0,\"columnName\":\"这是字段1\",\"columnValue\":\"\"},{\"sort\":0,\"columnName\":\"这是字段2\",\"columnValue\":\"\"}]}");
上述自动生成的代码忽略了 data 是指定了content-type=application/json 的情况
data 后端接收的是对象;因为form.append("data",""); 浏览器默认生成时生成的 content-type 是 application/octet-stream ,并非需要的 application/json
需要指定data 的 content-type = application/json;
修正后js代码应为:
const data = {"beanColumns":["活动名称"],"customFields":[{"sort":0,"columnName":"这是字段1","columnValue":""},{"sort":0,"columnName":"这是字段2","columnValue":""}]}
const form = new FormData();
form.append("file", "[object Object]");
//指定 data content-type=application/json
const dataBlob = new Blob([JSON.stringify(data)], { type: 'application/json' });
form.append("data", dataBlob );