vue新建環(huán)境變量以及網(wǎng)絡(luò)請(qǐng)求工具axios的二次封裝

1. 【環(huán)境變量】背景:
  • 在我們的實(shí)際項(xiàng)目開發(fā)中呢撞,一般會(huì)區(qū)分幾個(gè)環(huán)境蘑辑,分別是開發(fā)環(huán)境星爪、測試環(huán)境生產(chǎn)環(huán)境,當(dāng)然不排除分的比較細(xì)的還有預(yù)發(fā)布環(huán)境曾掂,一般來說這四個(gè)環(huán)境就足夠我們使用了惫谤。
2. 新建環(huán)境步驟:
  • 2.1 在根目錄下新建4個(gè)環(huán)境變量文件:
  • .env.dev【開發(fā)環(huán)境】
  • .env.test【測試環(huán)境】
  • .env.uat【預(yù)發(fā)布環(huán)境】
  • .env.prod【生產(chǎn)環(huán)境】
  • 四個(gè)環(huán)境內(nèi)的文件內(nèi)容如下:
//.env.dev文件
NODE_ENV = dev
# base url
VUE_APP_BASE_URL = "https://dev.it98k.cn"
--------------------------------------------------------------
//.env.test文件
NODE_ENV = test
# base url
VUE_APP_BASE_URL = "https://test.it98k.cn"
--------------------------------------------------------------
//.env.uat文件
NODE_ENV = uat
# base url
VUE_APP_BASE_URL = "https://uat.it98k.cn"
--------------------------------------------------------------
//.env.prod文件
NODE_ENV = prod
# base url
VUE_APP_BASE_URL = "https://prod.it98k.cn"
--------------------------------------------------------------
2.2 然后修改package.json【scripts】下的啟動(dòng)命令:
"scripts": {
    "serve": "vue-cli-service serve --mode dev",
    "build:test": "vue-cli-service build --mode test",
    "build:uat": "vue-cli-service build --mode uat",
    "build:prod": "vue-cli-service build --mode prod"
  },
  • 這樣修改完,本地啟動(dòng)項(xiàng)目命令依然是:npm run serve
  • 打包測試環(huán)境的命令是:npm run build:test
  • 打包預(yù)發(fā)布環(huán)境的命令是:npm run build:uat
  • 打包生產(chǎn)環(huán)境的命令是:npm run build:prod
3. 【基于axios的二次封裝】背景:
  • 在實(shí)際開發(fā)項(xiàng)目中珠洗,網(wǎng)絡(luò)請(qǐng)求基本上使用axios網(wǎng)絡(luò)請(qǐng)求工具溜歪,但是單純的使用像axios.get('http://xxxxx.com')來請(qǐng)求接口,隨著項(xiàng)目越來越大许蓖,頁面越來越多蝴猪,功能越來越完善,我們勢必會(huì)寫大量的axios請(qǐng)求膊爪,每次都這么寫自阱,費(fèi)時(shí)費(fèi)力,也不方便統(tǒng)一管理米酬,所以沛豌,需要將axios進(jìn)行二次封裝,以達(dá)到我們開發(fā)項(xiàng)目的時(shí)候省時(shí)赃额、省力琼懊、省心。
  • 3.1 第一步爬早,在src目錄下哼丈,新建utils/request.js文件,文件內(nèi)容如下:
//首先引入axios
import axios from 'axios'
//然后通過create方法來創(chuàng)建一個(gè)請(qǐng)求服務(wù)
//然后create方法內(nèi)有一些配置項(xiàng)筛严,比如接口域名`baseURL`醉旦、接口請(qǐng)求超時(shí)時(shí)間`timeout`
//接口url`url`
//接口請(qǐng)求方式`method`等等,需要我們按需傳入
// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL, // 完整的api地址 = 接口域名+ 接口路徑
  timeout: 5000 // 請(qǐng)求超時(shí)時(shí)間 5s
})
//下面會(huì)定義兩個(gè)攔截器,分別是 `請(qǐng)求攔截器`车胡,`響應(yīng)攔截器`
//`請(qǐng)求攔截器`是前端請(qǐng)求后端接口前處理的一些邏輯檬输,比如開啟loading,配置header請(qǐng)求頭等等
//`響應(yīng)攔截器`就是后端響應(yīng)我們前端匈棘,返回回來的數(shù)據(jù)丧慈,比如我們可以在這響應(yīng)攔截器內(nèi)拿到status Code
//拿到后端接口返回的code,關(guān)閉loading主卫、根據(jù)code碼處理一些詳細(xì)的邏輯等等一系列操作
//request interceptor   請(qǐng)求攔截器  
service.interceptors.request.use(
  config => {
    // do something before request is sent逃默。在發(fā)送請(qǐng)求之前做一些事情
    config.headers['token'] = "xxxxxx"
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)
// response interceptor  響應(yīng)攔截器
service.interceptors.response.use(
  response => {
    const res = response.data

    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 200) {
      alert(res.message || 'Error')
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error) // for debug
    alert(res.message || 'Error')
    return Promise.reject(error)
  }
)

// 最后暴露我們聲明的 service 服務(wù)
export default service
4. api的封裝與使用
  • api請(qǐng)求方法,也是要做一個(gè)封裝的簇搅,封裝流程如下
  • 4.1 在src目錄下新建api/index.js文件完域,文件內(nèi)容如下:
import request from '../utils/request';
//登錄接口,post方式傳參用data
export function login(data) {
  return request({
    url: '/api/login',
    method: 'post',
    data
  })
}
//獲取xx列表接口瘩将,get方式傳參用params
export function getList(params) {
  return request({
    url: '/api/getList',
    method: 'get',
    params
  })
}
  • 4.2 使用封裝好的api
  • 在需要的頁面吟税,比如我們的登錄頁面需要調(diào)用登錄接口,我們就要這樣用
//首先第一步要用import導(dǎo)入進(jìn)來我們的登錄接口
import { login } from '../api/index'

//然后直接調(diào)用login方法
login({username:'admin',password:"123456"}).then(res=>{
      console.log(res);
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姿现,一起剝皮案震驚了整個(gè)濱河市肠仪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌备典,老刑警劉巖藤韵,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熊经,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)欲险,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門镐依,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人天试,你說我怎么就攤上這事槐壳。” “怎么了喜每?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵务唐,是天一觀的道長。 經(jīng)常有香客問我带兜,道長枫笛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任刚照,我火速辦了婚禮刑巧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己啊楚,他們只是感情好吠冤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恭理,像睡著了一般拯辙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颜价,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天涯保,我揣著相機(jī)與錄音,去河邊找鬼拍嵌。 笑死遭赂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的横辆。 我是一名探鬼主播撇他,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼狈蚤!你這毒婦竟也來了困肩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后浇垦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苗膝,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年绞蹦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盆犁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出篡九,到底是詐尸還是另有隱情谐岁,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布榛臼,位于F島的核電站伊佃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏沛善。R本人自食惡果不足惜航揉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望金刁。 院中可真熱鬧迷捧,春花似錦织咧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至庆锦,卻和暖如春捅位,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搂抒。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工艇搀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人求晶。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓焰雕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親芳杏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矩屁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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