Vue項(xiàng)目使用axios對(duì)請(qǐng)求方法二次封裝

vue項(xiàng)目經(jīng)常會(huì)用到axios來請(qǐng)求數(shù)據(jù),那么首先肯定需要對(duì)這個(gè)請(qǐng)求方法進(jìn)行一個(gè)二次封裝,這樣能節(jié)省不必要的重復(fù)操作和過度冗余的代碼

根目錄創(chuàng)建api文件

在api文件下創(chuàng)建request.js文件简软,然后引入vue、axios伙狐、loading組件虑省,同時(shí)使用axios文檔上的方法create創(chuàng)建:

import Vue from 'vue'
import axios from 'axios'
import { showLoading, hideLoading } from 'components/loading'

const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  method: 'get', // default
  withCredentials: true,
  timeout: 15000 // 請(qǐng)求超時(shí)時(shí)間
})

// 添加請(qǐng)求攔截器
service.interceptors.request.use(
  config => {
    // 在發(fā)送請(qǐng)求之前做一些事情
    showLoading()
    return config
  },
  error => {
    //做一些有請(qǐng)求錯(cuò)誤的事情
    return Promise.reject(error);
  }
)

// response 攔截器
service.interceptors.response.use(
  response => {
    //使用響應(yīng)數(shù)據(jù)返回響應(yīng);
    hideLoading()
    return response
  },
  error =>{
    //使用響應(yīng)錯(cuò)誤返回
    return Promise.reject(error.response.data)
  }
)

export default service

頁面上使用方法

一县忌、在api文件下創(chuàng)建配置參數(shù)地址方法
比如登錄頁面需要請(qǐng)求接口掂榔,那么在api文件下創(chuàng)建login.js,然后再創(chuàng)建提供調(diào)用的方法:

import request from './request'

export const login = (username, password) => {
  return request({
    url: '/user/login',
    method: 'POST',
    data: {
      'name':username,
      'password':password
    }
  })
}

export const logout = () => {
  return request({
    url: '/user/logout',
    method: 'POST'
  })
}

export const modifyPasswor = (password) => {
  return request({
    url: '/user/modify',
    method: 'POST',
    data: {
      'password':password
    }
  })
}

那么當(dāng)頁面上調(diào)用這個(gè)方法時(shí)症杏,就會(huì)把當(dāng)前配置的參數(shù)地址傳遞給request.js装获,當(dāng)前傳遞過去的數(shù)據(jù)會(huì)跟axios.create自動(dòng)合并,那么傳過去的url會(huì)跟request.js的baseURL自動(dòng)拼接在一起厉颤,如果不希望當(dāng)前傳過去的跟baseURL拼接穴豫,那么可以傳一個(gè)完整的url

頁面調(diào)用login.js方法

<template>
  <div class="login-page">
    <img src="../../common/images/logo.png"  class="logo-img">
    <h1 class="login-title">歡迎登錄</h1>
    <ul class="login-list">
      <li class="login-item">
        <input type="text" placeholder="請(qǐng)輸入工號(hào)" v-model="username"/>
      </li>
      <li class="login-item">
        <input type="password" placeholder="請(qǐng)輸入密碼" v-model="password"/>
      </li>
    </ul>
    <van-button type="info" size="large" @click="login">登錄</van-button>
    <div class="login-tips">若忘記賬號(hào)密碼,請(qǐng)與您的上級(jí)聯(lián)系找回</div>
  </div>
</template>

<script>
import {login} from 'api/login'
import { isEmpty } from 'utils/common'
import { mapState, mapMutations } from 'vuex'
export default {
  data() {
    return{
      username: '',
      password: ''
    }
  },
  methods: {
    ...mapMutations(['changeUserInfo']),
    login() {
      if(isEmpty(this.username)){
        this.$toast('請(qǐng)輸入工號(hào)');
        return
      }
      if(isEmpty(this.password)){
        this.$toast('請(qǐng)輸入密碼');
        return
      }
      login(this.username, this.password).then((res) => {
        res = res.data
        if(res.status === '00'){
          const data = res.data
          // 登錄信息放在store
          this.changeUserInfo(data)
          this.$toast(res.msg);
          this.$router.push({path: '/list'})
        }else{
          this.$toast(res.msg);
        }
      }).catch((err) => {
        this.$toast(err);
      })
    }
  }
}
</script>

<style lang="scss" scoped>

</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逼友,一起剝皮案震驚了整個(gè)濱河市精肃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帜乞,老刑警劉巖司抱,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異黎烈,居然都是意外死亡习柠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門照棋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來资溃,“玉大人,你說我怎么就攤上這事烈炭∪芏В” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵符隙,是天一觀的道長(zhǎng)趴捅。 經(jīng)常有香客問我,道長(zhǎng)膏执,這世上最難降的妖魔是什么驻售? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮更米,結(jié)果婚禮上欺栗,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好迟几,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布消请。 她就那樣靜靜地躺著,像睡著了一般类腮。 火紅的嫁衣襯著肌膚如雪臊泰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天蚜枢,我揣著相機(jī)與錄音缸逃,去河邊找鬼。 笑死厂抽,一個(gè)胖子當(dāng)著我的面吹牛需频,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筷凤,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼昭殉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了藐守?” 一聲冷哼從身側(cè)響起挪丢,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卢厂,沒想到半個(gè)月后乾蓬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慎恒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年巢块,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巧号。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姥闭,靈堂內(nèi)的尸體忽然破棺而出丹鸿,到底是詐尸還是另有隱情,我是刑警寧澤棚品,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布靠欢,位于F島的核電站,受9級(jí)特大地震影響铜跑,放射性物質(zhì)發(fā)生泄漏门怪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一锅纺、第九天 我趴在偏房一處隱蔽的房頂上張望掷空。 院中可真熱鬧,春花似錦、人聲如沸坦弟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酿傍。三九已至烙懦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赤炒,已是汗流浹背氯析。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莺褒,地道東北人掩缓。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像癣朗,于是被迫代替她去往敵國(guó)和親拾因。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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