全部 ApiPost使用 后端 前端 接口测试 IOS Android 数据库 2022 测试技术 工具
问答 / 问答详情

生成的js、node、java等 代码 未处理 表单参数 指定 content-type 的情况

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

参数图:

生成的js、node、java等  代码 未处理 表单参数 指定 content-type 的情况

使用工具可以正常调用接口,

仅为生成的示例代码有问题

生成的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 );
| 0 收藏
  • 前天 提问

0 个回答

Apipost 私有化火热进行中

撰写答案

只服务于

前后端、移动端、测试人员

提问题 发布您遇到的Bug和问题,上万名大牛和开发者来帮您解决!