vue-element-admin icon indicating copy to clipboard operation
vue-element-admin copied to clipboard

请问如何解析 post 请求中 FormData?

Open sws797 opened this issue 1 year ago • 4 comments

Bug report(问题描述)

将API中post相关请求的参数包装到formData中后,就不能识别了 body-parser难道不能解析formData吗?

Steps to reproduce(问题复现步骤)

  1. src/store/modules/user.js 改成如下方式
...

login({ commit }, userInfo) {
  const { username, password } = userInfo
  return new Promise((resolve, reject) => {
    const formData = new FormData()
    formData.append('username', username.trim())
    formData.append('password', password)
    login(formData).then(response => {
      const { data } = response
      commit('SET_TOKEN', data.token)
      setToken(data.token)
      resolve()
    }).catch(error => {
      reject(error)
    })
  })
 },

...

然后在mock/user.js中无法获取config.body

{
  url: '/vue-element-admin/user/login',
  type: 'post',
  response: config => {
    console.log(config.body)
    ...
  }
}

如何解决这个问题?

sws797 avatar Jul 15 '22 00:07 sws797

注释掉src/mock-server.js第49行

app.use(bodyParser.json())

laozei6401 avatar Jul 18 '22 07:07 laozei6401

@laozei6401 额,没有用啊

sws797 avatar Jul 18 '22 07:07 sws797

解决方案

laozei6401 avatar Jul 18 '22 07:07 laozei6401

@laozei6401 试了一下,不行。两个issue不一样,那边是 post 超时,这边是将

login({ username: username.trim(), password: password })

改成

const formData = new FormData();
formData.append(....)
login(formData)

后,config.body = {} 了。我觉得一般人应该不会在post请求里专门写 FormData,但是这样写后抓不了了

sws797 avatar Jul 18 '22 07:07 sws797