Axios 是一個基於 promise 的 HTTP 庫,能夠用在瀏覽器和 node.js 中。不少狀況咱們要對請求和其響應進行特定的處理;若是請求數很是多,單獨對每個請求進行處理會變得很是麻煩。好在強大的axios爲開發者提供了這樣一個API:攔截器。攔截器分爲 請求(request)攔截器和 響應(response)攔截器。
安裝 axios,qs
npm install axios –save-dev
複製代碼
安裝 qs
npm install qs –save-dev
複製代碼
請求攔截器
import axios from "axios";
import qs from "qs";
const serve = axios.create({
baseURL: process.env.BASE_URL,
timeout: 5000
});
serve.interceptors.request.use(config => {
config.method === 'post'
? config.data = qs.stringify({...config.data})
: config.params = {...config.params};
config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
return config;
}, error => {
Promise.reject(error)
}
);
複製代碼
響應攔截器
serve.interceptors.response.use(
response => {
if (response.data.result === 'TRUE') {
return response.data;
} else {
console.error(response.data.data.msg)
}
},
error => {
console.error(error);
console.error(JSON.stringify(error));
let text = JSON.parse(JSON.stringify(error)).response.status === 404
? '404'
: '網絡異常,請重試';
alert(text)
return Promise.reject(error)
}
)
複製代碼