如何使用axios发送对象?

时间:2017-04-14 15:16:18

标签: javascript axios

有没有办法使用axios将对象发送到API?

这是我使用的代码:

axios.get('/api/phones/create/', {
    parameters: {
        phone: this.phone
    }
})
    .then(response => {
        console.log(response.data)
    })
    .catch(function (error) {
        console.log(error)
    })

在php方面,我有以下内容:

public function create($phone)
{
    return $phone;
}

我收到以下错误:

GET http://crm2.dev/api/phones/create 500 (Internal Server Error)
dispatchXhrRequest @ app.6007af59798a7b58ff81.js:256
xhrAdapter @ app.6007af59798a7b58ff81.js:93
dispatchRequest @ app.6007af59798a7b58ff81.js:662
app.6007af59798a7b58ff81.js:2266 Error: Request failed with status code 500
    at createError (app.6007af59798a7b58ff81.js:600)
    at settle (app.6007af59798a7b58ff81.js:742)
    at XMLHttpRequest.handleLoad (app.6007af59798a7b58ff81.js:158)

如果我尝试,axios.get('/api/phones/create/hello')我在控制台日志中得到hello

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:5)

这取决于“发送对象”的含义。

由于您正在使用GET请求并在参数中传递对象,因此您可以将其序列化为查询参数,作为GET请求的一部分。这不会真正发送对象,而是使用它来构建GET请求的URL的查询部分。

例如,以下是您向/api/phones/create?phone=123提出请求的方式:

axios.get('/api/phones/create/', {
    params: {
        phone: '123'
    }
})

如果您想将对象实际作为序列化JSON发送到API,则可以使用POST或PUT请求,具体取决于API的语义。

例如,要将{ "phone": "123" }发送到您的API,您可以执行以下操作:

axios.post('/api/phones/create/', {
  phone: '123'
});

注意:axios期望参数的密钥params

答案 1 :(得分:2)

首先尝试使用params代替parameters

如果您想支持旧浏览器,Axios依赖承诺您可能需要add promise polyfill代码。

以下是示例请求,请阅读official docs以获取更多信息。

axios.get('/url', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });