2017-04-14 228 views
2

有沒有辦法使用axios將對象發送到API?如何使用axios發送對象?

該代碼使用:

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

有沒有辦法做到這一點?

+1

我不能肯定,但'請求與狀態代碼的失敗500'說,這是服務器端的問題,錯誤的 – Leguest

+0

一部分確實是在PHP的方法:我這樣做,而不是:'公共函數來創建(請求$請求)' – Warrio

回答

3

這取決於你的意思是「發送一個對象」。

由於您正在使用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

+0

非常感謝。我忘記了發送的參數是請求的一部分。 PS:我正在使用GET請求獲取默認數據來創建手機。在商店方法中,我使用POST請求。這工作完美。謝謝。 – Warrio

+1

@Warrio沒問題的隊友,很高興幫助:) – nem035

1

首先嚐試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); 
    });