Axios的二次封裝

import axios from 'axios'
import qs from 'querystring'

根據(jù)環(huán)境變量區(qū)分接口的默認(rèn)地址

switch (process.env.NODE_ENV) {
  case 'production':
    axios.defaults.baseURL = 'http://api.baidu.com'
    break
  case 'test':
    axios.defaults.baseURL = 'http://192.168.20.12:8080'
    break
  default:
    axios.defaults.baseURL = '/api'
}

設(shè)置超時(shí)時(shí)間和跨域是否允許攜帶憑證

axios.defaults.timeout = 10000
axios.defaults.withCredentials = true

設(shè)置請求傳遞數(shù)據(jù)的格式 (看服務(wù)器要求什么格式)(x-www-form-urlencoded)

axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.transformRequest = data => qs.stringify(data)

設(shè)置請求攔截器
客戶端發(fā)送請求 -> [請求攔截器] -> 服務(wù)器TOKEN校驗(yàn)(JWT): 接收服務(wù)器返回的token已慢,存儲(chǔ)到vuex/本地存儲(chǔ)中炒辉,每一次向服務(wù)器發(fā)請求,我們應(yīng)該把token帶上

axios.interceptors.request.use(
  config => {
    // 攜帶token
    let token = localStorage.getItem('token')
    token && (config.headers.Authorization = token)
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

響應(yīng)攔截器
服務(wù)器返回信息 -> [攔截器統(tǒng)一處理] -> 客戶端JS獲取到信息

/* axios.defaults.validateStatus = status => {
  // 自定義響應(yīng)成功的HTTP狀態(tài)碼
  return /^(2|3)\d{2}$/.test(status)
} */
axios.interceptors.response.use(
  response => {
    return response.data
  },
  error => {
    let { response } = error
    if (response) {
      // 服務(wù)器最起碼返回結(jié)果了
      switch (response.status) {
        case 401: //=> 權(quán)限
          break
        case 403: //=> 服務(wù)器拒絕執(zhí)行(token過期)
          break
        case 404: //=> 找不到頁面
          break
      }
    } else {
      // 服務(wù)器連結(jié)果都沒有返回
      if (!window.navigator.onLine) {
        // 斷網(wǎng)處理:可以跳轉(zhuǎn)到斷網(wǎng)頁面
        return
      }
      return Promise.reject(error)
    }
  }
)

export default axios

CSDN:https://blog.csdn.net/weixin_45585996/article/details/107203358

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市穷绵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桩匪,老刑警劉巖月匣,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脓鹃,居然都是意外死亡逸尖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門瘸右,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娇跟,“玉大人,你說我怎么就攤上這事太颤“” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵龄章,是天一觀的道長苗胀。 經(jīng)常有香客問我,道長瓦堵,這世上最難降的妖魔是什么基协? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮菇用,結(jié)果婚禮上澜驮,老公的妹妹穿的比我還像新娘。我一直安慰自己惋鸥,他們只是感情好杂穷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卦绣,像睡著了一般耐量。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滤港,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天廊蜒,我揣著相機(jī)與錄音趴拧,去河邊找鬼。 笑死山叮,一個(gè)胖子當(dāng)著我的面吹牛著榴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播屁倔,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼脑又,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锐借?” 一聲冷哼從身側(cè)響起问麸,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钞翔,失蹤者是張志新(化名)和其女友劉穎口叙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅战,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妄田,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驮捍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疟呐。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖东且,靈堂內(nèi)的尸體忽然破棺而出启具,到底是詐尸還是另有隱情,我是刑警寧澤珊泳,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布鲁冯,位于F島的核電站,受9級特大地震影響色查,放射性物質(zhì)發(fā)生泄漏薯演。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一秧了、第九天 我趴在偏房一處隱蔽的房頂上張望跨扮。 院中可真熱鬧,春花似錦验毡、人聲如沸衡创。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璃氢。三九已至,卻和暖如春狮辽,著一層夾襖步出監(jiān)牢的瞬間一也,已是汗流浹背巢寡。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塘秦,地道東北人讼渊。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓动看,卻偏偏與公主長得像尊剔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子菱皆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354