Proxy代理實(shí)例(解決打包后proxy不生效等)

在開始講解前醋旦,先了解一下為什么會失效恒水;在項(xiàng)目中,會遇到一個問題饲齐, 就是使用webpack的時候,使用代理钉凌,可在開發(fā)環(huán)境中使用;但是在編譯打包過后捂人,前端頁面就變成了單獨(dú)的靜態(tài)資源御雕,而webpack的devServer被抽離了出去,這是和我們的代理實(shí)際上是沒有應(yīng)用的

簡單說就是 webpack.proxy 不會一起打包到build文件或者dist文件先慷。

我們先來看看如何使用webpack的代理:↓
這里的例子是使用CRA crate react app 的例子饮笛,(這個其實(shí)無論在vue或者其他的庫或者框架都一樣,只要是webpack)

const CracoLessPlugin = require('craco-less');
const path = require('path')

module.exports = {
   port: 9527,
   devServer: {
     'proxy': {
       '/307984': {
         target: 'http://rap2api.taobao.org/app/mock', // 代理地址的路徑
         changeOrigin: true, // 替換
       },
       '/': {
         target: 'http://47.108.***.***:22002',// 代理地址的路徑
         changeOrigin: true, // 替換
          pathRewrite: {        // 重定向论熙,路徑重寫
              '^/': '',     // ^首匹配 重寫過后 http://47.108.***.***:22002(重寫內(nèi)容)/*****
          },
       },
     },
   },
};

在這里代理了兩個地址福青, 一個是mock的地址,一個是測試服的地址脓诡,這是一個簡單的例子无午,但是這種會面臨一個問題,生產(chǎn)環(huán)境這不會生效祝谚,需要后端配合處理宪迟。但是其實(shí)也可以處理

解決辦法:

這里用的是axios, 既然不達(dá)不到我們想要的效果那就自己寫一個代理,配合.env來使用

import axios from 'axios';
import {message as Massage} from 'antd'
import { store } from '../store'

const service = axios.create({
  // baseURL: process.env.REACT_APP_BASE_URL,
  timeout: 30000,
})

// 代理配置 鍵做匹配項(xiàng),用.env 來區(qū)分開發(fā)還是生產(chǎn)環(huán)境  
let proxyConfig = {
  '/307984': {
    target: process.env.REACT_APP_ENV === 'production' ? 'http://rap2api.taobao.org/app/mock' : 'http://rap2api.taobao.org/app/mock',
  },
  '/': {
    target: process.env.REACT_APP_ENV === 'production' ? 'https://****admin.***ap.com/api' : 'http://47.108.***.173:22002',
  },
}
//定義代理
function beforeService(obj) {
  let handel = {
    get: (IsTarget, property, receiver) => {
      // IsTarget 目標(biāo)對象交惯, property 屬性次泽, receiver 代理對象, 這里是對url做出針對處理
      if (property === 'url') {
        for (const key in proxyConfig) {
          if ((IsTarget.url).slice(0, key.length) === key) {
            return proxyConfig[key].target + IsTarget.url
          }
        }
      } else {
        return IsTarget[property]
      }
    },
  }
  // new Proxy(target目標(biāo)對象席爽, handel處理對象) 
  let proxy = new Proxy(obj, handel)
  return service(proxy)
}

// 請求攔截
service.interceptors.request.use(function(config) {
  const token = store.getState().user.tokenHead +  store.getState().user.token
  config.headers['Authorization'] = token
  return config
})

// 響應(yīng)攔截
service.interceptors.response.use(function(response) {
  if (response.status >= 200 && response.status <= 300) {
    let { message, data, code} = response.data

    if (code === 200) { // 成功data數(shù)據(jù)
      return response.data
    }
    if (message) {
      Massage.info(message)
    }
  }
    // 錯誤提示
    const error = new Error('異常:' + message)
    Massage.error(message);
    return Promise.reject(error)
}, function(error) {
  return Promise.reject(error);
})

export default beforeService // 開啟代理
// export default service // 常規(guī)axios

在這個例子中定義了一個 beforeService的函數(shù)意荤,這里用到了我們的代理,具體可以看代碼只锻,有注釋玖像;思路是,我們在請求之前齐饮,傳入url的時候捐寥,這個時候來根據(jù)路徑做出匹配處理,最后再返回回去

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祖驱,一起剝皮案震驚了整個濱河市握恳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捺僻,老刑警劉巖乡洼,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡就珠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門醒颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妻怎,“玉大人,你說我怎么就攤上這事泞歉”普欤” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵腰耙,是天一觀的道長榛丢。 經(jīng)常有香客問我,道長挺庞,這世上最難降的妖魔是什么晰赞? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮选侨,結(jié)果婚禮上掖鱼,老公的妹妹穿的比我還像新娘。我一直安慰自己援制,他們只是感情好戏挡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晨仑,像睡著了一般褐墅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上洪己,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天妥凳,我揣著相機(jī)與錄音,去河邊找鬼码泛。 笑死猾封,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪珊。 我是一名探鬼主播晌缘,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼痢站!你這毒婦竟也來了磷箕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阵难,失蹤者是張志新(化名)和其女友劉穎岳枷,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡空繁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年殿衰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛泡。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡闷祥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出傲诵,到底是詐尸還是另有隱情凯砍,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布拴竹,位于F島的核電站悟衩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栓拜。R本人自食惡果不足惜座泳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菱属。 院中可真熱鬧钳榨,春花似錦、人聲如沸纽门。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赏陵。三九已至饼齿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝙搔,已是汗流浹背缕溉。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吃型,地道東北人证鸥。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像勤晚,于是被迫代替她去往敵國和親枉层。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

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