如何在一个post请求中同时通过body和formData传递参数?

情景大概是一个表单,

{
    key1: value1,
    key2: value2,
    ……
}

但是其中呢表单中又可以上传文件。
本来一次性提交表单呢是用formData的

export function apiRequest(data) {
  return request({
    url: request_address,
    method: 'post',
    data: data
  })
}
const form = new formData()
form.append(file, file)
form.append(key1, value1)
form.append(key2, value2)
apiRequest(form).then(res => {...}).catch(_ => {...})

大概这样。
这次呢有一点点意外,因为原来这个表单是不需要文件上传的

const params = {
    key1: value1,
    key2: value2,
}
apiRequest(params).then(res => {...}).catch(_ => {...})

大概直接这样就可以。但是突然原型加上了文件,不巧的是和我对接这个接口的后端是个实习生。
他给我的接口文档,表单数据请求类型是通过body传参,文件通过formData传参
虽然单独传都知道怎么传,但是同一个接口多种方式我真没遇到过……
我试图劝说他全部通过formData传参,但是好像失败了,他甚至反过来劝说我把一个接口掰成两个,一个用formData传文件一个用body传表单,我害怕地拒绝了。
于是我赶快爬了过来求教一下混合传参的正确姿势

阅读 8.6k
2 个回答

加文件了就改接口,直接走表单,接口不会的话,让他问问同事,
还让前端来问,真的是前端好说话呀
如果是javaer,让他接口取消requestbody,直接做参数绑定就行了

这不是实习生学习的好机会吗,让他去请教别人呀

推荐问题