Vue Resource是Vue.js官方提供的一種處理Web請求的插件,以Promise為基礎,同時提供了攔截器、變換器等功能,以可鏈式的方式,非常容易使用。
// 安裝 npm install vue-resource --save
Vue Resource提供兩種請求方法:get和post
// get請求 Vue.http.get('/path/to/resource') .then(response =>{ console.log(response.body); }, error =>{ console.log(error.statusText); });
我們可以看到,get方法需要一個url作為參數,還有兩個回調函數,一個是請求成功后的回調,一個是請求失敗后的回調。在成功后,我們可以通過response.body獲取響應體。
// post請求 Vue.http.post('/path/to/resource', {data: 'hello, world'}) .then(response =>{ console.log(response.body); }, error =>{ console.log(error.statusText); });
post方法除了url,還需要一個可選的請求體。在這里,我們通過一個對象傳遞數據。
// 配置全局選項 Vue.http.options.emulateJSON = true;
我們也可以通過配置全局選項來控制請求的行為。在這個例子中,我們將emulateJSON選項設置為true,這將會將post請求中的請求體以application/x-www-form-urlencoded格式發送,而不是默認的application/json格式。
// 攔截器 Vue.http.interceptors.push((request, next) =>{ console.log(request.url); next(response =>{ console.log(response.body); }); });
攔截器是Vue Resource的一個強大功能,可以用來修改請求和響應。在這個例子中,我們定義了一個攔截器,將請求的url輸出到控制臺,并在請求成功后輸出響應體。
// 變換器 Vue.http.interceptors.push((request, next) =>{ request.method = 'POST'; request.body = {data: 'hello, world'}; next(); }); Vue.http.interceptors.push((response, next) =>{ response.body = response.body.toUpperCase(); next(); }); Vue.http.get('/path/to/resource') .then(response =>{ console.log(response.body); });
變換器是另一個強大的功能,用來修改請求和響應體的結構。在這個例子中,我們定義了兩個攔截器,第一個將get請求轉換為post請求,并設置請求體;第二個將響應體轉換為大寫字母。最后,我們控制臺輸出響應體。
Vue Resource還提供了很多其他的功能,如上傳文件,使用JSONP,取消請求等,更多的信息請查閱官方文檔。