如何在vue中請求第三方資料--axios
阿新 • • 發佈:2020-12-02
1 axios -> 基於Promise物件 -> async & await
2 create階段 -> 返回Promise物件 -> 返回的資料可以直接解構【資料處理】
要寫入例項的資料(即頁面渲染使用的資料),需要用配置引數data接收
3 `import axios from 'axios';
4 多次匯入、使用的axios -> 將axios放在原型鏈上
import axios from 'axios';
Vue.prototype.axios = axios;
5 請求方法的別名
axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
6 攔截器
// 新增請求攔截器
axios.interceptors.request.use(function (config) {
// 在傳送請求之前做些什麼
return config;
}, function (error) {
// 對請求錯誤做些什麼
return Promise.reject(error);
});
// 新增響應攔截器
axios.interceptors.response.use(function (response) {
// 對響應資料做點什麼
return response;
}, function (error) {
// 對響應錯誤做點什麼
return Promise.reject(error);
});
6.1 請求攔截應用
axios.interceptors.request.use(config => {
// 在傳送請求之前做些什麼
let token = sessionStorage.getItem('userTk');
if (token) {
config.headers.Authorization = token
}
return config
}, error => {
// 對請求錯誤做些什麼
return Promise.reject(error);
});
6.2 響應攔截應用
axios.interceptors.response.use(response => {
if (response.data.code === '200') {
Auth.setToken(sessionStorage.getItem('userId'))
}
return response;
},
error => {
console.warn(error);
console.warn(error.response);
if ((error.response.status && error.response.status === 401) || error.response.statusCode === 401) {
// 已超時
Auth.removeToken(sessionStorage.getItem('userId'));
sessionStorage.clear();
router.replace('/login')
return Promise.reject('身份已過期,請重新登入!');
}
if(error.response && error.response.status === 500)
return Promise.reject('服務異常,請稍後重試!');
});