vue-cli2跨域訪問(wèn)服務(wù)端接口

配置服務(wù)器訪問(wèn)接口地址需要考慮三種環(huán)境下的配置:分別是:

1.本地環(huán)境---即執(zhí)行npm run dev 的環(huán)境
2.測(cè)試環(huán)境---即打包發(fā)布到測(cè)試服務(wù)器的環(huán)境--一般執(zhí)行npm run build
3.生產(chǎn)環(huán)境---即打包部署到線上服務(wù)器的環(huán)境---一般執(zhí)行npm run publish

本地環(huán)境:

如下圖:本地環(huán)境中config的index.js文件中配置代理服務(wù)器闷供,所謂代理服務(wù)器粟关,顧名思義会钝,使用一個(gè)字符串將下面一行url地址代替(此配置只適用于本地環(huán)境)


image.png

上圖設(shè)置了3個(gè)代理服務(wù)器向臀,分別使用/api /wgfw /dlfw
代理了三個(gè)服務(wù)器項(xiàng)目地址

接著,配置axios請(qǐng)求文件

'use strict'
import axios from "axios"
import Const from "./const" 
// 創(chuàng)建一個(gè)axios的對(duì)象
// application/x-www-form-urlencoded;charset=utf-8
const Axios = axios.create({
    baseURL: "",//這里不能使用前綴架谎,因?yàn)槿猪?xiàng)目不一定會(huì)訪問(wèn)一個(gè)域名
    method: 'post',
    apiType: '',
    timeout: 10000,
    responseType: "json",
    withCredentials: true, // 是否允許帶cookie這些
    headers: {
        "Content-Type": "text/plain"
    }
});
//添加請(qǐng)求攔截器,在請(qǐng)求或響應(yīng)被 then 或 catch 處理前攔截它們炸宵。
Axios.interceptors.request.use(
    config => {
        // 在發(fā)送請(qǐng)求之前做某件事
        //1.判斷是否需要添加默認(rèn)域名
        if (config.apiType === '1') {
            config.baseURL = Const.micro_base_url;
        } else 
        if (config.apiType === '2') {
            config.baseURL = Const.gateway_base_url;
        } else {
            config.baseURL = Const.spa_base_http;
        }
        return config;
    },
    error => {
      // 對(duì)請(qǐng)求錯(cuò)誤做些什么,可以抓取錯(cuò)誤日志
      console.log();
      return Promise.reject(error.data.error.message);
    }
);
//返回狀態(tài)判斷(添加響應(yīng)攔截器)
Axios.interceptors.response.use(
    res => {
        //對(duì)響應(yīng)數(shù)據(jù)做些事
        return res.data;
    },
    error => {
        console.log(error);
        return Promise.reject(error);
    }
);

// 對(duì)axios的實(shí)例重新封裝成一個(gè)plugin ,方便 Vue.use(xxxx)
export default {
    install: function (Vue, Option) {
        //使用Object.defineProperty為Vue綁定屬性,且不可被修改
        Object.defineProperty(Vue.prototype, "$http", { value: Axios });
    }
};

如上代碼 先是對(duì)請(qǐng)求參數(shù)進(jìn)行配置谷扣,接著添加請(qǐng)求攔截器土全,這里根據(jù)上面設(shè)置的一個(gè)apiType 參數(shù)對(duì)不同請(qǐng)求類型進(jìn)行特殊處理(當(dāng)前項(xiàng)目使用此參數(shù)判斷使用哪個(gè)后端服務(wù)項(xiàng)目),并在請(qǐng)求或響應(yīng)被 then 或 catch 處理前攔截它們
最后会涎,將此調(diào)用服務(wù)的方法名稱綁定為$http*

PS:

上述在判斷apiType 的之后裹匙,引用了自己配置的const參數(shù)js
在此文件中,會(huì)根據(jù)當(dāng)前環(huán)境給參數(shù)不同的值
主要code如下:

//spa服務(wù)器訪問(wèn)地址
let SERVER_BASE_URL;
let MICRO_BASE_URL;
let GATEWAY_BASE_URL;

switch (process.env.NODE_ENV) {
  case 'development':
    SERVER_BASE_URL = '/api';
    MICRO_BASE_URL = '/dlfw';
    GATEWAY_BASE_URL = '/wgfw';
    break
  case 'testing':
    SERVER_BASE_URL = '/aaa';
    MICRO_BASE_URL = 'http://test-xxx.com/xxxxx';
    GATEWAY_BASE_URL = 'http://test-api-xxx.com/xxx';
    break
  case 'production':
    SERVER_BASE_URL = '/aaa';
    MICRO_BASE_URL = 'http://xxx.com/xxxxx';
    GATEWAY_BASE_URL = 'http://api-xxx.com/xxx';
    break
  default:
    break
}
export default {
    spa_base_http:SERVER_BASE_URL,
    micro_base_url: MICRO_BASE_URL,
    gateway_base_url: GATEWAY_BASE_URL
}

在main.js中調(diào)用此文件末秃,接著在vue頁(yè)面中即可根據(jù)需要請(qǐng)求服務(wù)

   initInfo: function(type) {
      var _this = this;
      // 調(diào)服務(wù)
      _this
        .$http({
          apiType: '1',
          url: "/hongbaoyu/init?accessToken=" + localStorage.getItem("userToken"),
          data: {
          }
        })
        .then(res => {
          console.log(res);
          let data = res.result || {};
          if (res.reCode === "0") {
            // 通過(guò)
      
          } else {
            _this.pwdHint = "請(qǐng)求超時(shí),請(qǐng)稍后再試";
          }
        })
        .catch(e => {
          console.log(e);
    
        });
    },

最后說(shuō)明:
apiType參數(shù)是根據(jù)vue頁(yè)面不同的傳值請(qǐng)求不同域名服務(wù)器接口概页,而const中的switch則是根據(jù)不同運(yùn)行環(huán)境,確定服務(wù)器接口url

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末练慕,一起剝皮案震驚了整個(gè)濱河市惰匙,隨后出現(xiàn)的幾起案子技掏,更是在濱河造成了極大的恐慌,老刑警劉巖项鬼,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件零截,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秃臣,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哪工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奥此,“玉大人,你說(shuō)我怎么就攤上這事雁比≈苫ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵偎捎,是天一觀的道長(zhǎng)蠢终。 經(jīng)常有香客問(wèn)我,道長(zhǎng)茴她,這世上最難降的妖魔是什么寻拂? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮丈牢,結(jié)果婚禮上祭钉,老公的妹妹穿的比我還像新娘。我一直安慰自己己沛,他們只是感情好慌核,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著申尼,像睡著了一般垮卓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上师幕,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天粟按,我揣著相機(jī)與錄音,去河邊找鬼们衙。 笑死钾怔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蒙挑。 我是一名探鬼主播宗侦,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忆蚀!你這毒婦竟也來(lái)了矾利?” 一聲冷哼從身側(cè)響起姑裂,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎男旗,沒想到半個(gè)月后舶斧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡察皇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年茴厉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片什荣。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矾缓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稻爬,到底是詐尸還是另有隱情嗜闻,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布桅锄,位于F島的核電站琉雳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏友瘤。R本人自食惡果不足惜翠肘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望商佑。 院中可真熱鬧锯茄,春花似錦、人聲如沸茶没。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抓半。三九已至喂急,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛求,已是汗流浹背廊移。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留探入,地道東北人狡孔。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蜂嗽,于是被迫代替她去往敵國(guó)和親苗膝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355