當我們在做接口請求時,比如判斷登錄超時時候,通常是接口返回一個特定的錯誤碼,那如果我們每個接口都去判斷一個耗時耗力,這個時候我們可以用攔截器去進行統一的http請求攔截。
1.安裝配置axios
cnpm install --save axios
我們可以建一個js文件來做這個統一的處理,新建一個axios.js,如下
import axios from 'axios'
import { Indicator } from 'mint-ui';
import { Toast } from 'mint-ui';
// http request 攔截器
axios.interceptors.request.use(
config => {
Indicator.open()
return config;
},
err => {
Indicator.close()
return Promise.reject(err);
});
// http response 攔截器
axios.interceptors.response.use(
response => {
Indicator.close()
return response;
},
error => {
Indicator.close()
}); //歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
export default axios
然后在main.js中引入這個js文件
import axios from './axio';
Vue.prototype.$axios = axios;
這樣就可以使用axios去請求了,在組件中可以用this.axios去調用
this.$axios({
url:requestUrl+'homePage/v1/indexNewPropertiesResult',
method:'POST',
}).then(function(response){ //接口返回數據
console.log(response)
that.modulesArr=response.data.data.modules;
// that.getRecommendGoods(0);
});//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
只有用axios請求接口,才能去攔截,現在已經能在axios.js中攔截到了,可以在兩個狀態中做你需要的操作
補充:
- axios使用攔截器統一處理所有的http請求
- axios使用攔截器
- 在請求或響應被 then 或 catch 處理前攔截它們。
http request攔截器
// 添加請求攔截器
axios.interceptors.request.use(function (config) {
// 在發送請求之前做些什么
return config;
}, function (error) {
// 對請求錯誤做些什么
return Promise.reject(error);
});//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
http respones攔截器
// 添加響應攔截器
axios.interceptors.response.use(function (response) {
// 對響應數據做點什么
return response;
}, function (error) {
// 對響應錯誤做點什么
return Promise.reject(error);
});//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
移除攔截器
var myInterceptor = axios.interceptors.request.use(function () {/*...*/});
axios.interceptors.request.eject(myInterceptor);
為自定義axios實例添加攔截器
var instance = axios.create();
instance.interceptors.request.use(function () {/*...*/});
結語
感謝您的觀看,如有不足之處,歡迎批評指正。