文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

axios的二次封装与proxy反向代理怎么使用

2023-06-29 21:28

关注

本文小编为大家详细介绍“axios的二次封装与proxy反向代理怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“axios的二次封装与proxy反向代理怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Axios与proxy反向代理

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

1、Axios 的特性

2、Axios 的安装

npm i axios# 或者yran add axios

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

在要进行使用的文件(request.js)里面导入

// 这是实现 axios 的二次分装// 导入下载好的包impront axios from 'axios'// 创建 axios 实例const service = axios.create({    // 添加要对接的后端 url 接口    // bassUrl: '<url>',    // 设置超时时间    timeout: 3000})// 请求拦截service.interceptors.request.use(config => {    // 可以添加一些响应头信息等        return config}) // 响应拦截service.interceptors.response.use(res => {    console.log('请求拦截', res)    return res})// 导出export default service

如果是对接多个后端接口,前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到 API服务器,就在vue.config.js 中书写如下代码

// vue.config.jsmodule.exports = {  devServer:{      // 更改端口号      port: 9550,      // 是否自动打开浏览器      open: true,      proxy: {       // 这里是访问到以 /api 开头的 url 的时候会代理到target 目标上          '/api': {              target:'<url>',              ws: true,              changeOrigin:true,              // 重新修改路径              pathRewrite: {                  '^/api': ''              }          }      }  }}

注:为什么要重新修改路径,因为在发送请求后会在url中多拼接上一个 &rsquo;&lsquo; /api &rsquo;&lsquo; ,但是我们获取数据又不需要这个才能拿到,所以就要重新修改,把他拿掉;拿掉之后就可以获取到数据了

最后那个地方需要就直接导入service 然后调用就行了

axios反向代理proxy个人理解

使用反向代理proxy的原因

首先需要了解浏览器的同源策略,同源就是说比如你VUE的项目地址是“http://localhost:8080”,而你后端项目启动地址是&lsquo;http://localhost:9999&rsquo;,两者中协议(http)、域名(localhost)相同,但是端口号(:xxxx)vue是8080,而后端是9999不相同,所以产生跨域,需要使用反向代理。(若两者满足协议、域名、端口号相同则不存在跨域问题)。

反向代理在我个人理解就是给你vue项目访问后端资源时给你套上的一个壳,让浏览器认为本次请求是同源的,浏览器就不会进行拦截,数据可以正常返回(类似vpn原理吧)。

proxy基本配置

module.exports = {    devServer: {        proxy: {            '/proxyurl':{                target:'http://localhost:9999',//起同源作用的url 简单来说就是你要访问的服务器                //ws: true, 这个是 开启websocket                changeOrigin: true,//字面意思:更改源点 很多人说是开启跨域 也可以这么理解                pathRewrite: {                    '^/proxyurl': '' //还有一种写法是'^/proxyurl': '/' 自测                }            }        }    }}
//写个最简单的例子用法//前端项目地址是 http://localhost:8080//后端项目地址是 http://localhost:9999    axios.get("/proxyurl/user/getalluser").then(res => {        console.log(res);    });

解释这个例子:

显然我们是通过vue项目访问了后端资源,抛开代理单看这段代码,是以http://localhost:8080/proxyurl/user/getalluser请求资源的。

但是有了反向代理,反向代理看到了你这段url中出现了&rsquo;/proxyurl&lsquo;,反向代理起作用,将&rsquo;/proxyurl&lsquo;前面这段&rsquo;http://localhost:8080&lsquo;替换成了&rsquo;http://localhost:9999&lsquo;,这时候请求资源的url变为&lsquo;http://localhost:9999/proxyurl/user/getalluser&rsquo;。

但是我们又配置了一项pathRewrite: {'^/proxyurl': ''},'^/proxyurl'是正则表达式,它会匹配你url中的字符串。这一选项的代码意思是,将url中的&rsquo;/proxyurl&lsquo;替换为空字符串。则现在的url是http://localhost:9999/user/getalluser

ps:通常我们会将axios封装,可以在创建axios实例时这样写

export function request(config){    let axiosInstance = axios.create({        baseURL: '/proxyurl', //在调用时拼接上后面的url就可以了        timeout: 5000    });    return axiosInstance(config);}

读到这里,这篇“axios的二次封装与proxy反向代理怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯