最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

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

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

/****** request攔截器==>對(duì)請(qǐng)求參數(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 => { //請(qǐng)求錯(cuò)誤處理
  app.$vux.toast.show({
    type: 'warn',
    text: error
  });
  Promise.reject(error)
});

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

/****** respone攔截器==>對(duì)響應(yīng)做處理 ******/
service.interceptors.response.use(
  response => { //成功請(qǐng)求到數(shù)據(jù)
    app.$vux.loading.hide();
    //這里根據(jù)后端提供的數(shù)據(jù)進(jìn)行對(duì)應(yīng)的處理
    if (response.data.result === 'TRUE') {
      return response.data;
    } else {
      app.$vux.toast.show({ //常規(guī)錯(cuò)誤處理
        type: 'warn',
        text: response.data.data.msg
      });
    }
  },
  error => { //響應(yīng)錯(cuò)誤處理
    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ò)異常,請(qǐng)重試';
    app.$vux.toast.show({
      type: 'warn',
      text: text
    });
 
    return Promise.reject(error)
  }
);

最后,將我們的axios實(shí)例暴露出去,整個(gè)axios的封裝就寫(xiě)完了。

export default service;

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

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

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

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

然后在具體的組件中進(jìn)行調(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);
  }
}

附上項(xiàng)目代碼地址:  https://github.com/xie991283109/vueCli-test

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

 

相關(guān)文章

  • Vue動(dòng)態(tài)組件與內(nèi)置組件淺析講解

    Vue動(dòng)態(tài)組件與內(nèi)置組件淺析講解

    閑話(huà)少說(shuō),我們進(jìn)入今天的小小五分鐘學(xué)習(xí)時(shí)間,前面我們了解了vue的組件,我們本文主要是講解vue的動(dòng)態(tài)組件和內(nèi)置組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • element vue Array數(shù)組和Map對(duì)象的添加與刪除操作

    element vue Array數(shù)組和Map對(duì)象的添加與刪除操作

    這篇文章主要介紹了element vue Array數(shù)組和Map對(duì)象的添加與刪除功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 使用vue-cli創(chuàng)建項(xiàng)目并webpack打包的操作方法

    使用vue-cli創(chuàng)建項(xiàng)目并webpack打包的操作方法

    本文給大家分享使用vue-cli創(chuàng)建項(xiàng)目基于webpack模板打包的配置方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • 修改Vue打包后的默認(rèn)文件名操作

    修改Vue打包后的默認(rèn)文件名操作

    這篇文章主要介紹了修改Vue打包后的默認(rèn)文件名操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue element自定義表單驗(yàn)證請(qǐng)求后端接口驗(yàn)證

    vue element自定義表單驗(yàn)證請(qǐng)求后端接口驗(yàn)證

    這篇文章主要介紹了vue element自定義表單驗(yàn)證請(qǐng)求后端接口驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • vue mixins合并策略以及應(yīng)用場(chǎng)景分析

    vue mixins合并策略以及應(yīng)用場(chǎng)景分析

    這篇文章主要介紹了vue mixins合并策略以及應(yīng)用場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue表單及表單綁定方法

    Vue表單及表單綁定方法

    今天小編就為大家分享一篇Vue表單及表單綁定方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue 實(shí)現(xiàn)移動(dòng)端鍵盤(pán)搜索事件監(jiān)聽(tīng)

    vue 實(shí)現(xiàn)移動(dòng)端鍵盤(pán)搜索事件監(jiān)聽(tīng)

    今天小編就為大家分享一篇vue 實(shí)現(xiàn)移動(dòng)端鍵盤(pán)搜索事件監(jiān)聽(tīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 使用Vue生成動(dòng)態(tài)表單

    使用Vue生成動(dòng)態(tài)表單

    這篇文章主要介紹了Vue生成動(dòng)態(tài)表單功能,這是小編第一次接這個(gè)需求,作為前端開(kāi)發(fā)的我真的不知如何下手,今天小編通過(guò)一段代碼給大家分享vue生成動(dòng)態(tài)表單效果,需要的朋友可以參考下
    2019-11-11
  • vue使用自定義事件的表單輸入組件用法詳解【日期組件與貨幣組件】

    vue使用自定義事件的表單輸入組件用法詳解【日期組件與貨幣組件】

    這篇文章主要介紹了vue使用自定義事件的表單輸入組件用法,結(jié)合實(shí)例形式詳細(xì)分析了vue.js日期組件與貨幣組件相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下
    2020-06-06

最新評(píng)論

油尖旺区| 邓州市| 镇远县| 武宣县| 大竹县| 通江县| 津南区| 西林县| 全椒县| 昔阳县| 蒙自县| 钟山县| 江川县| 寿宁县| 镇雄县| 房产| 云浮市| 万宁市| 隆昌县| 涡阳县| 营山县| 和政县| 四子王旗| 皋兰县| 饶阳县| 林口县| 调兵山市| 怀远县| 武功县| 衡山县| 镇赉县| 扶沟县| 五指山市| 班玛县| 金乡县| 晋城| 固原市| 志丹县| 茶陵县| 饶河县| 木里|