如何将axios post参数设置为对象?

时间:2019-11-27 15:30:07

标签: javascript rest axios

当使用API​​以模板文字方式发送SMS时,其工作正常:

axios.post(
     `https://api.fooserver.com/${API_KEY}/verify/lookup?receptor=${phone}&token=${code}`
    )
     .then(resp => resp.data)

对象参数有什么问题?

axios.post(`https://api.kavenegar.com/v1/${API_KEY}/verify/lookup`, {
            receptor: phone,
            token: code
        })
        .then(resp => resp.data);

它确实发送了请求,但对象参数。

3 个答案:

答案 0 :(得分:1)

很幸运,我理解了您的问题:),使用参数Axios将自动将您的对象转换为查询参数。 使用这个:

axios.post(`https://api.kavenegar.com/v1/${API_KEY}/verify/lookup`,{}, {
        params: {
            receptor: phone,
            token: code
        }})
        .then(resp => resp.data);

答案 1 :(得分:1)

在第一个示例中,您将数据作为查询参数发送,与在第二个示例中一样,它与在邮件正文中发送数据不同。

实际上,您可以将查询参数作为对象传递,您只需要稍微调用.post

axios
    .post(
        `https://api.fooserver.com/${API_KEY}/verify/lookup`,
        {},
        {
            params: {
                receptor: phone,
                token: code
            }
        }
        )
    .then(resp => resp.data);

或者,如果您愿意:

axios({
    method: 'POST',
    url: `https://api.fooserver.com/${API_KEY}/verify/lookup`,
    params: {
        receptor: phone,
        token: code
    }
})
.then(resp => resp.data);

答案 2 :(得分:-1)

您需要使用querystring.stringify

赞:

 const querystring = require('querystring');
    axios.post(`https://api.kavenegar.com/v1/${API_KEY}/verify/lookup`, querystring.stringify({
                receptor: phone,
                token: code
            })
            .then(resp => resp.data);