亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

axios封裝,使用攔截器統(tǒng)一處理接口,超詳細(xì)的教程(推薦)

 更新時間:2019年05月02日 11:26:46   作者:小只昵稱被占用了  
這篇文章主要介紹了axios封裝使用攔截器處理接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近從0開始搭了一個vue-cli的項目, 雖然axios也可以直接拿來用,但是對接口比較零散,不太好進行維護,也會產(chǎn)生大量的重復(fù)代碼,所以筆者對axios進行了統(tǒng)一接口處理,廢話不多說,直接上代碼。   

首先,在vue-cli項目的src路徑下新建一個axios文件夾,在axios文件夾里新建aps.js和request.js,api.js用于寫接口,對axios的封裝寫在request.js里,項目機構(gòu)如圖:

1. axios統(tǒng)一封裝

然后開始統(tǒng)一封裝axios, 首先引入axios、qs依賴,引入main.js主要是用于后面對接口進行統(tǒng)一處理,比如調(diào)接口的時候,顯示loading等。這個main.js根據(jù)你個人情況,可加可不加。

//request.js
import axios from "axios";
import qs from "qs";
import app from "../main.js";

然后創(chuàng)建一個axios實例,這個process.env.BASE_URL在config/dev.evn.js、prod.evn.js里面進行配置:

/****** 創(chuàng)建axios實例 ******/
const service = axios.create({
  baseURL: process.env.BASE_URL, // api的base_url
  timeout: 5000 // 請求超時時間
});

axios實例創(chuàng)建好之后,開始使用request攔截器對axios請求配置做統(tǒng)一處理,具體如下:

/****** request攔截器==>對請求參數(shù)做處理 ******/
service.interceptors.request.use(config => {
  app.$vux.loading.show({
    text: '數(shù)據(jù)加載中……'
  });
 
  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 => { //請求錯誤處理
  app.$vux.toast.show({
    type: 'warn',
    text: error
  });
  Promise.reject(error)
});

然后是對response做統(tǒng)一處理,代碼如下:

/****** respone攔截器==>對響應(yīng)做處理 ******/
service.interceptors.response.use(
  response => { //成功請求到數(shù)據(jù)
    app.$vux.loading.hide();
    //這里根據(jù)后端提供的數(shù)據(jù)進行對應(yīng)的處理
    if (response.data.result === 'TRUE') {
      return response.data;
    } else {
      app.$vux.toast.show({ //常規(guī)錯誤處理
        type: 'warn',
        text: response.data.data.msg
      });
    }
  },
  error => { //響應(yīng)錯誤處理
    console.log('error');
    console.log(error);
    console.log(JSON.stringify(error));
 
    let text = JSON.parse(JSON.stringify(error)).response.status === 404
      ? '404'
      : '網(wǎng)絡(luò)異常,請重試';
    app.$vux.toast.show({
      type: 'warn',
      text: text
    });
 
    return Promise.reject(error)
  }
);

最后,將我們的axios實例暴露出去,整個axios的封裝就寫完了。

export default service;

2. axios接口的調(diào)用方式

axios封裝好之后,調(diào)用就很簡單了。我們把接口統(tǒng)一寫在api.js文件里。(當(dāng)然,如果你的業(yè)務(wù)非常復(fù)雜的話,建議把不同業(yè)務(wù)的api分開放到不同的文件里,這樣方便以后維護)。

注意:post請求參數(shù)放在data里面,get請求參數(shù)放在params里。

//api.js
import service from './request'
 
export const getPersonInfo = data => {
  return service({
    url: '/person_pay/getpersoninfo',
    method: 'post',
    data
  })
};

然后在具體的組件中進行調(diào)用。

//index.vue
import {getPersonInfo} from '../axios/api.js'
export default {
  created: async function () {
    const params = {
      card_no: '111'
    };
    let res = await getPersonInfo(params);
    console.log(res);
  }
}

附上項目代碼地址:  https://github.com/xie991283109/vueCli-test

以上所述是小編給大家介紹的axios封裝使用攔截器處理接口詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

 

相關(guān)文章

  • vue Tab切換以及緩存頁面處理的幾種方式

    vue Tab切換以及緩存頁面處理的幾種方式

    相信tab切換對于大家來說都不算陌生,后臺管理系統(tǒng)中多會用到。如果不知道的話,可以看一下瀏覽器上方的標(biāo)簽頁切換,大概效果就是這樣。
    2021-05-05
  • vue+elementui實現(xiàn)動態(tài)控制表格列的顯示和隱藏

    vue+elementui實現(xiàn)動態(tài)控制表格列的顯示和隱藏

    這篇文章主要介紹了vue+elementui實現(xiàn)動態(tài)控制表格列的顯示和隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue3進階主題Composition API使用詳解

    Vue3進階主題Composition API使用詳解

    這篇文章主要為大家介紹了Vue3進階主題Composition API使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • vue中data和props的區(qū)別詳解

    vue中data和props的區(qū)別詳解

    這篇文章主要介紹了vue中data和props的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)吧
    2024-01-01
  • 詳解Vue中過度動畫效果應(yīng)用

    詳解Vue中過度動畫效果應(yīng)用

    這篇文章主要介紹了詳解Vue中過度動畫效果應(yīng)用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 從零開始在vue-cli4配置自適應(yīng)vw布局的實現(xiàn)

    從零開始在vue-cli4配置自適應(yīng)vw布局的實現(xiàn)

    這篇文章主要介紹了從零開始在vue-cli4配置自適應(yīng)vw布局,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue3中?provide?和?inject?用法小結(jié)

    vue3中?provide?和?inject?用法小結(jié)

    父子組件傳遞數(shù)據(jù)時,使用的是props和emit,父傳子時,使用的是?props,如果是父組件傳孫組件時,就需要先傳給子組件,子組件再傳給孫組件,如果多個子組件或多個孫組件使用時,就需要傳很多次,會很麻煩,這篇文章主要介紹了vue3中?provide?和?inject?用法,需要的朋友可以參考下
    2023-11-11
  • 12 種使用Vue 的最佳做法

    12 種使用Vue 的最佳做法

    這篇文章主要介紹了12 種使用Vue 的最佳做法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Vue2.0仿餓了么webapp單頁面應(yīng)用詳細(xì)步驟

    Vue2.0仿餓了么webapp單頁面應(yīng)用詳細(xì)步驟

    本篇文章給大家分享了Vue2.0仿餓了么webapp單頁面應(yīng)用詳細(xì)步驟,有興趣的朋友可以跟著操作下。
    2018-07-07
  • vue跳轉(zhuǎn)頁面并且實現(xiàn)參數(shù)傳遞接受示例

    vue跳轉(zhuǎn)頁面并且實現(xiàn)參數(shù)傳遞接受示例

    這篇文章主要為大家介紹了vue跳轉(zhuǎn)頁面并且實現(xiàn)參數(shù)傳遞接受示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論