如何配置Zapier以form-data格式替代JSON发送请求体?
解决Zapier发送form-data格式请求的问题
嘿,我来帮你搞定这个Zapier数据格式的问题!你的核心问题是错误设置了Content-Type头,并且没有用Zapier专门处理form-data的方式,所以后端识别不到正确的格式。
问题根源分析
你之前的代码里把Content-Type设成了application/json,这会强制Zapier以JSON格式发送请求体;另外params是用来拼接URL参数的,不是请求体里的form-data,body在Content-Type为JSON时才会被序列化成JSON字符串,这两个都不符合后端的要求。
修正后的解决方案
Zapier的z.request有专门的form字段来处理form-data(包括multipart/form-data和x-www-form-urlencoded),只要把数据放到这个字段里,Zapier会自动帮你设置正确的Content-Type并格式化请求体。
下面是修正后的完整代码:
const options = { url: `${bundle.inputData.URL}`, // 替换成你的后端实际地址,或者从输入数据中获取 method: 'POST', headers: { 'Authorization': `${bundle.inputData.token}`, // 确保token是正确的字符串格式 'Accept': 'application/json' // 保留这个,因为后端返回JSON格式 }, form: { // 重点:用form字段存放form-data的键值对 'phone': bundle.inputData.phone, 'email': bundle.inputData.email, 'dialog': bundle.inputData.dialog, 'name': bundle.inputData.name } }; return z.request(options) .then((response) => { response.throwForStatus(); // 处理请求错误 const results = z.JSON.parse(response.content); return results; });
额外注意事项
- 不要手动设置
Content-Type为multipart/form-data,Zapier会在检测到form字段时自动添加正确的头(包括边界值),手动设置反而可能导致格式错误。 - 测试时可以在Zapier的“测试步骤”里查看请求日志,确认请求头中的
Content-Type是multipart/form-data; boundary=xxx,并且请求体是form-data格式的键值对。 - 如果你的后端需要的是
application/x-www-form-urlencoded格式,这段代码同样适用,Zapier会根据情况自动调整Content-Type。
内容的提问来源于stack exchange,提问作者Mathias Lund
相关产品推荐
相关产品推荐

