首页 > 解决方案 > Axios 以数据二进制格式发送我的纯 JSON

问题描述

当我的 Vuejs 代码尝试发布 JSON 时,后端返回 400 错误。

我通过 chrome 网络捕获找到了线索。
我的 Axios 代码以数据二进制格式发送 JSON。

curl 'http://localhost:5000/api/auth/login'  \
  -H 'Content-Type: application/json;charset=UTF-8' \
  -H 'Accept: application/json' \
  --data-binary '{"username":"admin","password":"ehllow"}'

但我不知道它是如何工作的。
我期待的请求是

curl ... -D '{"username":"admin","password":"ehllow"}'`

不是--data-binary

这是我的 JavaScript 代码。

axios({
  method: 'post',
  url: '/api/auth/login',
  data: {
    "username": "admin",
    "password": "ehllow"
  },
  config: {
    headers: {
      'Content-Type': 'application/json'
    }
  }
})
.then(function (response) {
  //handle success
  console.log(response);
})
.catch(function (response) {
  //handle error
  console.log(response);
});

如何更改我的 axios 代码以将 json 发送到普通数据(-D

标签: axioshttp-status-code-400

解决方案


我有同样的问题,答案在这里: axios post request to send form data

简而言之:

let data = new FormData();
data.set("username", "admin");
data.set("password", "ehllow");
axios({
  method: 'post',
  url: '/api/auth/login',
  data: data,
  config: {
    headers: {
      'Content-Type': 'application/json'
    }
  }
})

让我陷入循环,因为二进制数据的读取方式与表单数据不同。


推荐阅读