有没有办法使用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
。
有办法做到这一点吗?
答案 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);
});