Vue-cli axios 再封裝

一次封裝可以在不同組件調(diào)用ajax請(qǐng)求坝橡,減少重復(fù)代碼
本示例返回的參數(shù)模板為:

{
  state:1, //1為成功
  message:"",
  data:[]
}

封裝

1方仿、新建一個(gè)js文件,在這取名為ajaxFn.js

2藏澳、引入axios等模塊

import axios from 'axios'
import {Message} from 'element-ui' //引入element的消息框仁锯,用于post修改請(qǐng)求時(shí)的消息提示,可選
import store from '@/store/store.js' //引入vuex中的狀態(tài)翔悠,引用名和路徑根據(jù)項(xiàng)目實(shí)際情況业崖,可選

3、定義api域名變量和共用參數(shù)對(duì)象變量蓄愁,根據(jù)實(shí)際情況修改

var domain = ""; //api域名
var baseParams = { //基礎(chǔ)參數(shù)
    token: "",
    userid: 0
    //......
}; 

4双炕、封裝Get方法。其中init方法用于判斷是否有params參數(shù)撮抓,并合并參數(shù)對(duì)象妇斤,具體實(shí)現(xiàn)見(jiàn)后

function dataGet(apiName, params, callback){
    var url = domain + apiName;
    var obj = initFn(params, callback, arguments[1]); //init方法實(shí)現(xiàn)見(jiàn)后
    var nparams = obj.nparams;
    callback = obj.callback;

    axios.get(url, {params: nparams}).then((response) => {
        var all = response.data; //返回所有數(shù)據(jù)
        var data = response.data.data; //根據(jù)后端實(shí)際返回修改
        
        //根據(jù)后端實(shí)際返回修改
        if(all.state==1){ //成功
            if(callback) callback(data, all);
        }else{ //失敗
            console.log(all.state, all.message);
        }

    }).catch((error)=>{
        console.log(error);    
    });
}

5、封裝Post方法

function dataPost(apiName, params, callback){
    var url = domain + apiName;
    var obj = initFn(params, callback, arguments[1]);
    var nparams = obj.nparams;
    callback = obj.callback;

    axios.post(url, nparams).then((response) => {
        var all = response.data;
        var data = response.data.data; //根據(jù)后端實(shí)際返回修改
        
        //根據(jù)后端實(shí)際返回修改
        if(all.state==1){ //成功
            if(callback) callback(data, all);
        }else{ //失敗
            console.log(all.state, all.message);
        }
        
    }).catch((error)=>{
        console.log(error);
    });
}

6、封裝含element消息提示框的Post方法

function dataPostXD(apiName, params, callback){
    var url = domain + apiName;
    var obj = initFn(params, callback, arguments[1]);
    var nparams = obj.nparams;
    callback = obj.callback;

    axios.post(url, nparams).then((response) => {
        var all = response.data;
        var data = response.data.data; //根據(jù)后端實(shí)際返回修改
        
        //根據(jù)后端實(shí)際返回修改
        if(all.state==1){ //成功
            Message({message: '操作成功站超!', type: 'success'});
            if(callback) callback(data, all);

        }else{ //失敗
            console.log(all.state, all.message);
            Message({message: '操作失斴┧ !', type: 'error'});
        }
        
    }).catch((error)=>{
        console.log(error);
        Message({message: '操作失斔老唷融求!', type: 'error'});
    });
}

7、補(bǔ)充實(shí)現(xiàn)init方法

function initFn(params, callback, argument){
    //如果沒(méi)有參數(shù)
    if (typeof argument == "function"){
        callback = argument;
        params = {};
    }
    //對(duì)象合并,確定最終參數(shù)
    return {
        nparams: $.extend({}, params, baseParams),
        callback: callback
    } 

}

8算撮、export上述方法

export{
    dataGet, dataPost, dataPostXD
}

使用

見(jiàn)如下示例:

//根據(jù)實(shí)際路徑引入剛才封裝的js文件
import {dataGet, dataPost, dataPostXD} from '@/assets/scripts/ajaxFn.js'

export default {
    name:'headerbar',
    data:function() {
        return {
            menuLists: []
        }
    },
    mounted(){
        this.getMenuLists(); 
    },
    methods:{
        getMenuLists(){
            //調(diào)用封裝的get方法生宛,post方法亦然
            dataGet("/Menu/GetMenuListAll", {levels: 1}, (data, all)=>{
                this.menuLists = data;
            });
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钮惠,隨后出現(xiàn)的幾起案子茅糜,更是在濱河造成了極大的恐慌,老刑警劉巖素挽,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔑赘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡预明,警方通過(guò)查閱死者的電腦和手機(jī)缩赛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)撰糠,“玉大人酥馍,你說(shuō)我怎么就攤上這事≡睦遥” “怎么了旨袒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)术辐。 經(jīng)常有香客問(wèn)我砚尽,道長(zhǎng),這世上最難降的妖魔是什么辉词? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任必孤,我火速辦了婚禮,結(jié)果婚禮上瑞躺,老公的妹妹穿的比我還像新娘敷搪。我一直安慰自己,他們只是感情好幢哨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布赡勘。 她就那樣靜靜地躺著,像睡著了一般捞镰。 火紅的嫁衣襯著肌膚如雪狮含。 梳的紋絲不亂的頭發(fā)上顽悼,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音几迄,去河邊找鬼蔚龙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛映胁,可吹牛的內(nèi)容都是我干的木羹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼解孙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坑填!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起弛姜,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脐瑰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后廷臼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體苍在,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年荠商,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寂恬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莱没,死狀恐怖初肉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饰躲,我是刑警寧澤牙咏,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站嘹裂,受9級(jí)特大地震影響妄壶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焦蘑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盒发。 院中可真熱鬧例嘱,春花似錦、人聲如沸宁舰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蛮艰。三九已至腋腮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背即寡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工徊哑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聪富。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓莺丑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親墩蔓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梢莽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容