若依修改,若依如何发送请求---王清江07,axios的请求在request.js文件中,若依发送GET请求,必须用param

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 若依修改,若依如何发送请求---王清江07,axios的请求在request.js文件中,若依发送GET请求,必须用param

资源链接:

https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg5OTgxOTg0Ng==&action=getalbum&album_id=2441331662295973890&uin=&key=&devicetype=Windows+11+x64&version=63090b11&lang=zh_CN&ascene=7&session_us=gh_c7592ce20720

原文链接:

https://mp.weixin.qq.com/s?__biz=Mzg5OTgxOTg0Ng==&mid=2247483785&idx=1&sn=3dca2cb382d194c31c7e4a6dcb8a7dae&chksm=c04c31a0f73bb8b688b1c1f8d5e3912c68cc320d9b9490c2602922058361a9c1df5a8bab34e6&scene=178&cur_album_id=2441331662295973890&poc_token=HKSJd2ajf2cJuaeZKBL_9mfpbBvWUyUJz6GdQK0z

前端对axios的封装理解和基本使用    

ruoyi的前端对axios进行了封装,让我们发get请求或者是post请求更加方便了。

ruoyi对axios的封装在下面文件中:

打开文件,可以看到它有三个显眼的方法,分别是request拦截器、response拦截器和通用下载方法。

request拦截器

Get请求

request拦截器对我们发送的请求进行了封装,当我们发送Get请求,那么我们携带参数的时候应该用param。,对应下面的源码。
 
// get请求映射params参数
if (config.method === 'get' && config.params) {
 let url = config.url + '?' + tansParams(config.params);
 url = url.slice(0, -1);
 config.params = {};
 config.url = url;
}

通过此这简单的代码,可以让get请求自动变为我们熟悉的形式[http://xxxxx:port/aaa?key1=value1&key2=value2]。如需要详细了解,同学们可以利用单元测试的方法测试即可。

来看一个get请求的案例:

// 获取验证码 不带参数
export function getCodeImg() {
 return request({
   url: '/captchaImage',
   headers: {
     isToken: false
   },
   method: 'get',
   timeout: 20000
 })
}
 
 
 
// 查询在线用户列表 带参数
export function list(query) {
 return request({
   url: '/monitor/online/list',
   method: 'get',
   params: query
 })
}

当我们查看在线用户的时候:发现确实用的param,而且确实请求变成了http://xxxxx:port/aaa?key1=value1&key2=value2的样子,江哥你没有骗我:

话说回来,这个在线用户的功能怎么实现的呢?

直接告诉大家结论:ruoyi的在线用户存在redis中的,每次一个人登录,就会把他的登录信息存在redis中,当我们去查询在线用户,无非就是去redis中取一下有哪一些用户罢了!

具体而言,它使用redis的查询巧妙实现的(视频中debug),详细见视频。

我们还发现登录人具有一个TTL(保持登录状态的有效期),还发现登录人具有他的许许多多的信息......

Post

Post请求带参数使用data。

具体代码也差不多:

if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) {
 const requestObj = {
   url: config.url,
   data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
   time: new Date().getTime()
 }
 const sessionObj = cache.session.getJSON('sessionObj')
 if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
   cache.session.setJSON('sessionObj', requestObj)
 } else {
   const s_url = sessionObj.url;                  // 请求地址
   const s_data = sessionObj.data;                // 请求数据
   const s_time = sessionObj.time;                // 请求时间
   const interval = 1000;                         // 间隔时间(ms),小于此时间视为重复提交
   if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) {
     const message = '数据正在处理,请勿重复提交';
     console.warn(`[${s_url}]: ` + message)
     return Promise.reject(new Error(message))
   } else {
     cache.session.setJSON('sessionObj', requestObj)
   }
 }
}

响应拦截器

用于每一个响应的拦截过滤处理。

对不同状态码进行判断给出处理逻辑,并不是特别重要。

资料来源:

这里有一个request拦截器,request请求又涉及到GET请求和POST请求

发请求分为POST请求和GET请求

若依发送GET请求,必须用param

通过这行代码自动将请求转换成这种形式

不带参数

带了一个参数

若依在axios中首先创建了一个axios实例

之后对GET请求做了一个特殊处理,拼接字符串


相关文章
|
2月前
|
JavaScript 前端开发 开发者
Nest.js控制器深度解析:路由与请求处理的高级特性
以上就是对 NestJS 控制层高级特性深度解析:从基本概念到异步支持再到更复杂场景下拦截其与管道等功能性组件运用都有所涉及,希望能够帮助开发者更好地理解和运用 NestJS 进行高效开发工作。
315 15
|
5月前
|
JavaScript 前端开发 API
Node.js中发起HTTP请求的五种方式
以上五种方式,尽管只是冰山一角,但已经足以让编写Node.js HTTP请求的你,在连接世界的舞台上演奏出华丽的乐章。从原生的 `http`到现代的 `fetch`,每种方式都有独特的风格和表现力,让你的代码随着项目的节奏自由地舞动。
579 65
|
3月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
827 0
|
8月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
10月前
|
前端开发 JavaScript Java
前端解决axios请求的跨域问题【2步完成】
本文介绍如何通过前端配置解决跨域问题,主要针对Vue项目中的`vite.config.js`文件进行修改。作者在联调过程中遇到跨域报错
543 1
|
JavaScript 前端开发 API
Next.js 实战 (六):如何实现文件本地上传
这篇文章介绍了在Next.js中如何实现文件上传到本地的方法。文章首先提到Next.js官方文档中没有提供文件上传的实例代码,因此开发者需要自行实现,通常有两种思路:使用Node.js原生上传或使用第三方插件如multer。接着,文章选择了使用Node.js原生上传的方式来讲解实现过程,包括如何通过哈希值命名文件、上传到指定目录以及如何分类文件夹。然后,文章展示了具体的实现步骤,包括编写代码来处理文件上传,并给出了代码示例。最后,文章通过一个效果演示说明了如何通过postman模拟上传文件,并展示了上传后的文件夹结构。
319 0
Next.js 实战 (六):如何实现文件本地上传
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
218 2
|
Python
axios的get请求传入数组参数
【10月更文挑战第11天】 当使用 `axios` 发送包含数组参数的 GET 请求时,默认的序列化方式可能与后端(如 Django)不兼容,导致无法正确获取数组参数。解决方案是通过 `paramsSerializer` 指定自定义序列化函数,或使用 `qs` 库来格式化数组参数,确保前后端一致。示例代码展示了如何使用 `qs` 库设置 `arrayFormat` 为 `&quot;repeat&quot;`,以符合 Django 的解析要求。
517 2
|
12月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
175 0
|
前端开发 JavaScript UED
axios取消请求CancelToken的原理解析及用法示例
axios取消请求CancelToken的原理解析及用法示例
847 0