最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue-cil之a(chǎn)xios的二次封裝與proxy反向代理使用說明

 更新時(shí)間:2022年04月07日 10:09:17   作者:Sky_sjr  
這篇文章主要介紹了vue-cil之a(chǎn)xios的二次封裝與proxy反向代理使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Axios與proxy反向代理

Axios 是一個(gè)基于 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

1、Axios 的特性

  • 從瀏覽器中創(chuàng)建 XMLHttpRequests
  • 從 node.js 創(chuàng)建 http 請(qǐng)求
  • 支持 Promise API
  • 攔截請(qǐng)求和響應(yīng)
  • 轉(zhuǎn)換請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù)
  • 取消請(qǐng)求
  • 自動(dòng)轉(zhuǎn)換 JSON 數(shù)據(jù)
  • 客戶端支持防御 XSRF

2、Axios 的安裝

npm i axios
# 或者
yran add axios

3、Axios 與proxy反向代理的使用

在要進(jìn)行使用的文件(request.js)里面導(dǎo)入

// 這是實(shí)現(xiàn) axios 的二次分裝
// 導(dǎo)入下載好的包
impront axios from 'axios'
// 創(chuàng)建 axios 實(shí)例
const service = axios.create({
? ? // 添加要對(duì)接的后端 url 接口
? ? // bassUrl: '<url>',
? ? // 設(shè)置超時(shí)時(shí)間
? ? timeout: 3000
})
// 請(qǐng)求攔截
service.interceptors.request.use(config => {
? ? // 可以添加一些響應(yīng)頭信息等
? ??
? ? return config
})?
// 響應(yīng)攔截
service.interceptors.response.use(res => {
? ? console.log('請(qǐng)求攔截', res)
? ? return res
})
// 導(dǎo)出
export default service

如果是對(duì)接多個(gè)后端接口,前端應(yīng)用和后端API服務(wù)器沒有運(yùn)行在同一個(gè)主機(jī)上,你需要在開發(fā)環(huán)境下將API請(qǐng)求代理到 API服務(wù)器,就在vue.config.js 中書寫如下代碼

// vue.config.js
module.exports = {
? devServer:{
? ? ? // 更改端口號(hào)
? ? ? port: 9550,
? ? ? // 是否自動(dòng)打開瀏覽器
? ? ? open: true,
? ? ? proxy: {
? ? ? ?// 這里是訪問到以 /api 開頭的 url 的時(shí)候會(huì)代理到target 目標(biāo)上
? ? ? ?? ?'/api': {
? ? ? ?? ??? ?target:'<url>',
? ? ? ?? ??? ?ws: true,
? ? ? ?? ??? ?changeOrigin:true,
? ? ? ?? ??? ?// 重新修改路徑
? ? ? ?? ??? ?pathRewrite: {
? ? ? ?? ??? ??? ?'^/api': ''
? ?? ??? ??? ?}
? ?? ??? ?}
? ?? ?}
? }
}

注:為什么要重新修改路徑,因?yàn)樵诎l(fā)送請(qǐng)求后會(huì)在url中多拼接上一個(gè) ’‘ /api ’‘ ,但是我們獲取數(shù)據(jù)又不需要這個(gè)才能拿到,所以就要重新修改,把他拿掉;拿掉之后就可以獲取到數(shù)據(jù)了

最后那個(gè)地方需要就直接導(dǎo)入service 然后調(diào)用就行了

axios反向代理proxy個(gè)人理解

使用反向代理proxy的原因

首先需要了解瀏覽器的同源策略,同源就是說比如你VUE的項(xiàng)目地址是“http://localhost:8080”,而你后端項(xiàng)目啟動(dòng)地址是‘http://localhost:9999’,兩者中協(xié)議(http)、域名(localhost)相同,但是端口號(hào)(:xxxx)vue是8080,而后端是9999不相同,所以產(chǎn)生跨域,需要使用反向代理。(若兩者滿足協(xié)議、域名、端口號(hào)相同則不存在跨域問題)。

反向代理在我個(gè)人理解就是給你vue項(xiàng)目訪問后端資源時(shí)給你套上的一個(gè)殼,讓瀏覽器認(rèn)為本次請(qǐng)求是同源的,瀏覽器就不會(huì)進(jìn)行攔截,數(shù)據(jù)可以正常返回(類似vpn原理吧)。

proxy基本配置

module.exports = {
?? ?devServer: {
?? ??? ?proxy: {
?? ??? ??? ?'/proxyurl':{
?? ??? ??? ??? ?target:'http://localhost:9999',//起同源作用的url 簡(jiǎn)單來說就是你要訪問的服務(wù)器
?? ??? ??? ??? ?//ws: true, 這個(gè)是 開啟websocket
?? ??? ??? ??? ?changeOrigin: true,//字面意思:更改源點(diǎn) 很多人說是開啟跨域 也可以這么理解
?? ??? ??? ??? ?pathRewrite: {
?? ??? ??? ??? ??? ?'^/proxyurl': '' //還有一種寫法是'^/proxyurl': '/' 自測(cè)
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}
}
//寫個(gè)最簡(jiǎn)單的例子用法
//前端項(xiàng)目地址是 http://localhost:8080
//后端項(xiàng)目地址是 http://localhost:9999
?? ?axios.get("/proxyurl/user/getalluser").then(res => {
?? ??? ?console.log(res);
?? ?});

解釋這個(gè)例子:

顯然我們是通過vue項(xiàng)目訪問了后端資源,拋開代理單看這段代碼,是以http://localhost:8080/proxyurl/user/getalluser請(qǐng)求資源的。

但是有了反向代理,反向代理看到了你這段url中出現(xiàn)了’/proxyurl‘,反向代理起作用,將’/proxyurl‘前面這段’http://localhost:8080‘替換成了’http://localhost:9999‘,這時(shí)候請(qǐng)求資源的url變?yōu)?lsquo;http://localhost:9999/proxyurl/user/getalluser’。

但是我們又配置了一項(xiàng)pathRewrite: {'^/proxyurl': ''},'^/proxyurl'是正則表達(dá)式,它會(huì)匹配你url中的字符串。這一選項(xiàng)的代碼意思是,將url中的’/proxyurl‘替換為空字符串。則現(xiàn)在的url是http://localhost:9999/user/getalluser

ps:通常我們會(huì)將axios封裝,可以在創(chuàng)建axios實(shí)例時(shí)這樣寫

export function request(config){
? ? let axiosInstance = axios.create({
? ? ? ? baseURL: '/proxyurl', //在調(diào)用時(shí)拼接上后面的url就可以了
? ? ? ? timeout: 5000
? ? });
? ? return axiosInstance(config);
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue常用的數(shù)字孿生可視化的自適應(yīng)方案

    vue常用的數(shù)字孿生可視化的自適應(yīng)方案

    這篇文章主要為大家介紹了vue常用的數(shù)字孿生可視化的自適應(yīng)方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • VueJs單頁應(yīng)用實(shí)現(xiàn)微信網(wǎng)頁授權(quán)及微信分享功能示例

    VueJs單頁應(yīng)用實(shí)現(xiàn)微信網(wǎng)頁授權(quán)及微信分享功能示例

    本篇文章主要介紹了VueJs單頁應(yīng)用實(shí)現(xiàn)微信網(wǎng)頁授權(quán)及微信分享功能示例,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • vue中防抖和節(jié)流的使用方法

    vue中防抖和節(jié)流的使用方法

    防抖和節(jié)流是我們?cè)陂_發(fā)過程中常用優(yōu)化性能的方式,可以減少不必要的計(jì)算,不浪費(fèi)資源,只在適合的時(shí)候再進(jìn)行觸發(fā)計(jì)算,這篇文章主要給大家介紹了關(guān)于vue中防抖和節(jié)流使用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue父子之間值傳遞的實(shí)例教程

    Vue父子之間值傳遞的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于Vue父子之間值傳遞的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue組件重新渲染(組件重載)的3種實(shí)現(xiàn)方式

    Vue組件重新渲染(組件重載)的3種實(shí)現(xiàn)方式

    這篇文章主要介紹了Vue組件重新渲染(組件重載)的3種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue實(shí)現(xiàn)element-ui對(duì)話框可拖拽功能

    vue實(shí)現(xiàn)element-ui對(duì)話框可拖拽功能

    這篇文章主要介紹了vue實(shí)現(xiàn)element-ui對(duì)話框可拖拽功能,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue中異步函數(shù)async和await的用法說明

    vue中異步函數(shù)async和await的用法說明

    這篇文章主要介紹了vue中異步函數(shù)async和await的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue項(xiàng)目netWork地址無法訪問的問題及解決

    vue項(xiàng)目netWork地址無法訪問的問題及解決

    這篇文章主要介紹了vue項(xiàng)目netWork地址無法訪問的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vue的安裝及element組件的安裝方法

    vue的安裝及element組件的安裝方法

    下面小編就為大家分享一篇vue的安裝及element組件的安裝,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 前端vue實(shí)現(xiàn)的h5頁面接入微信支付流程(jsapi方式)

    前端vue實(shí)現(xiàn)的h5頁面接入微信支付流程(jsapi方式)

    vue實(shí)現(xiàn)微信支付有三種方式,第一種方式是PC端支付,第二種方式是H5支付,第三種方式是微信公眾號(hào)支付,這篇文章主要給大家介紹了關(guān)于前端vue實(shí)現(xiàn)的h5頁面接入微信支付流程,文中介紹的方法是利用jsapi方式,通過代碼將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01

最新評(píng)論

涞水县| 化德县| 饶阳县| 旌德县| 全南县| 永靖县| 同心县| 融水| 屯门区| 灵武市| 台湾省| 兴隆县| 张掖市| 定结县| 龙陵县| 泉州市| 五峰| 张家川| 曲水县| 白朗县| 缙云县| 荃湾区| 收藏| 贵德县| 万安县| 景东| 潮安县| 房产| 桑植县| 彩票| 定远县| 千阳县| 罗源县| 伊吾县| 颍上县| 璧山县| 珲春市| 云阳县| 保亭| 双辽市| 太和县|