1. 程式人生 > 實用技巧 >如何在vue中請求第三方資料--axios

如何在vue中請求第三方資料--axios

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('服務異常,請稍後重試!');
});