代码之家  ›  专栏  ›  技术社区  ›  sungyong

Axios发送数据二进制格式的纯JSON

  •  0
  • sungyong  · 技术社区  · 8 年前

    当我的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 )

    0 回复  |  直到 8 年前
        1
  •  3
  •   George Kovats    7 年前

    我有同样的问题,答案是: 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'
        }
      }
    })
    

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