【问题标题】:Axios post adds extra key to objectAxios 帖子为对象添加了额外的键
【发布时间】:2017-06-17 21:49:03
【问题描述】:

我尝试使用 axios 发布一个对象。我需要它是这样的格式:

var dataObj = {username:"username",password:"password",data1:"data1"};

当我使用 axios 发布它并在后端捕获时,它会向对象添加一个额外的键,如下所示:

{dataObj:{username:"username",password:"password",data1:"data1"}};

我怎样才能在将它发送到后端之前去掉这个额外的字段,让它看起来像这样?

{username:"username",password:"password",data1:"data1"}

我知道我可以在后端解析它,但我不能修改后端因为它不是我的。

这就是我的 axios 帖子的样子:

axios.post('http://192.168.1.1xx:3000/data', {
    dataObj
})
.then(function (response) {
    console.log(response);
})
.catch(function (error) {
    console.log(error);
});

谢谢:)

【问题讨论】:

  • 对象也是动态变化的,所以我不能将字段一个接一个地添加到 POST 正文中,除非有一个循环函数

标签: javascript object post axios


【解决方案1】:
axios.post('http://192.168.1.1xx:3000/data', 
    dataObj
)

代替:

axios.post('http://192.168.1.1xx:3000/data', {
    dataObj
})

删除括号 ↪ 我的意思是 ,dataObj) 而不是 , {dataObj}) ... 因为“dataObj”已经是一个文字对象。

【讨论】:

  • 它仍然在响应中添加了一个 {data:{... 键,但我认为我可以忍受这一点。谢谢!
【解决方案2】:

原始问题的解决方案是使用 axios github 存储库中记录的 url 编码格式: https://github.com/axios/axios#using-applicationx-www-form-urlencoded-format

我已经使用“qs”进行了测试,并按要求工作。

const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2021-08-14
    相关资源
    最近更新 更多