有時候Vue使用內置HTTP庫發起HTTP請求并不足以滿足我們的需求。例如,當需要將某些參數放入請求頭,或者在請求體中發送JSON數據時,我們就需要使用axios這個庫。
import axios from 'axios';
// 使用 GET 方法發起請求
axios.get('/user?id=12345')
.then(response =>console.log(response))
.catch(error =>console.error(error));
在這個例子中,我們使用了GET請求,它是默認的HTTP方法。我們用axios.get()方法指定了請求URL。它返回一個Promise,promise使用了.then()方法監聽響應,并打印返回的數據。如果遇到錯誤,會調用.catch()方法。
// 使用 POST 方法提交 POST 請求體
axios.post('/user', {firstName: 'John', lastName: 'Doe'})
.then(response =>console.log(response))
.catch(error =>console.error(error));
我們可以使用axios.post()方法來發送請求體。它接受兩個參數:請求URL和請求體的數據對象。在這個例子中,我們發送一個包含名字的JSON對象({firstName: 'John', lastName: 'Doe'})。在服務器端,我們需要解析請求體,并將其使用后續的邏輯。
// 在請求中設置請求頭
const config = {
headers: { 'Authorization': 'Bearer ' + localStorage.token }
};
axios.get('/user', config)
.then(response =>console.log(response))
.catch(error =>console.error(error));
我們可以使用params和headers參數來設置請求URL和HTTP請求頭。在這個例子中,我們使用headers參數來設置Authorization頭部字段。我們將在localStorage中存儲的authentication token添加到請求中,因此服務器會驗證該請求是否合法。
const instance = axios.create({
baseURL: 'https://api.example.com',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
instance.get('/user?id=12345')
.then(response =>console.log(response))
.catch(error =>console.error(error));
使用Axios.create可以方便地創建定制化axios實例。例如,我們可以為實例設置baseURL,這有助于我們將所有請求發送到特定URL上,并允許我們在服務器環境上設置不同的baseURL。我們還可以通過傳遞timeout毫秒來控制請求超時時間。我們還可以將默認請求頭設置為X-Custom-Header。
總之,Axios是一個非常方便的JavaScript HTTP客戶端,可以簡化發送HTTP請求的代碼。它內置了一些可定制的選項,在開發Web應用程序時非常有用。組合使用Vue和Axios,可以完成許多Web應用程序構想。