我們團隊平時在前後端傳接基本上都是走 API,有時候前端同仁呼叫 API 遇到問題雖然可以直接使用 swagger UI 測試,但是在前端程式碼的部分因為筆者主要是開發後端,在前端沒有學的那麼勤,還是比較常使用 jQuery 呼叫 API ,無法直接協助前端同仁解決問題,於是打算多練練 axios,並將學到的內容記錄下來。
axios.get 的 get 可以替換為 post, put, patch, request, delete, head, options ,上面的寫法也等效於下面這樣:
then, catch, finally 都是可選的,下面示範時將會省略
中間 name, email 的部分會放在 Body,接收到的內容如下:
補充: axios 要使用 delete 方法並附加 body 參數,需要依照下列方式才能夠帶入 body :
簡單來說就是要多包一層 data
當然直接可以帶參數在網址後面,不過如果使用物件資料則可以使用下面的方式
參考資料:
Github - axios
安裝
使用 CDN:
<script src="https://cdn.jsdelivr.net/npm/axios@1.3.2/dist/axios.min.js"></script>
基礎 Get 請求
以取得假日日曆表為例:
axios.get('https://cdn.jsdelivr.net/gh/ruyut/TaiwanCalendar/data/2023.json')
.then(function (response) { // 只有成功會執行
console.log("HTTP 狀態碼:", response.status);
console.log("data:", response.data);
})
.catch(function (error) { // 只有失敗會執行
console.log(error);
})
.finally(function () { // 成功或失敗都會執行
console.log("結束");
});
axios.get 的 get 可以替換為 post, put, patch, request, delete, head, options ,上面的寫法也等效於下面這樣:
axios({
method: 'get',
url: 'https://cdn.jsdelivr.net/gh/ruyut/TaiwanCalendar/data/2023.json',
})
.then(function (response) { // 只有成功會執行
console.log("HTTP 狀態碼:", response.status);
console.log("data:", response.data);
})
.catch(function (error) { // 只有失敗會執行
console.log(error);
})
.finally(function () { // 成功或失敗都會執行
console.log("結束");
});
then, catch, finally 都是可選的,下面示範時將會省略
呼叫 API 並傳入 Body
post, put, patch 都可以這樣使用 (官網說明 delete 也可以,但筆者在測試時無法接收到)
axios.post('http://localhost:5090/User', {
"name": "ruyut",
"email": 'a@ruyut.com'
})
中間 name, email 的部分會放在 Body,接收到的內容如下:
{"name":"ruyut","email":"a@ruyut.com"}
補充: axios 要使用 delete 方法並附加 body 參數,需要依照下列方式才能夠帶入 body :
axios.post('http://localhost:5090/User', {
data:{
"name": "ruyut",
"email": 'a@ruyut.com'
}
})
簡單來說就是要多包一層 data
查詢參數 queryString
目標效果:
http://localhost:5090/User?Name=ruyut&Email=a@ruyut.com
當然直接可以帶參數在網址後面,不過如果使用物件資料則可以使用下面的方式
axios.get('http://localhost:5090/User', {
params: {
"name": "ruyut",
"email": 'a@ruyut.com'
}
})
Bearer Token
let token = 'your-token'
axios.get('https://localhost:7183/api/user/credential', {
headers: {
Authorization: `Bearer ${token}` // Bearer 跟 token 中間有一個空格
}
})
參考資料:
Github - axios
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com