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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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请求做了一个特殊处理,拼接字符串


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
5月前
|
前端开发 JavaScript Java
前端解决axios请求的跨域问题【2步完成】
本文介绍如何通过前端配置解决跨域问题,主要针对Vue项目中的`vite.config.js`文件进行修改。作者在联调过程中遇到跨域报错
147 1
|
5月前
|
JavaScript 前端开发 API
Next.js 实战 (六):如何实现文件本地上传
这篇文章介绍了在Next.js中如何实现文件上传到本地的方法。文章首先提到Next.js官方文档中没有提供文件上传的实例代码,因此开发者需要自行实现,通常有两种思路:使用Node.js原生上传或使用第三方插件如multer。接着,文章选择了使用Node.js原生上传的方式来讲解实现过程,包括如何通过哈希值命名文件、上传到指定目录以及如何分类文件夹。然后,文章展示了具体的实现步骤,包括编写代码来处理文件上传,并给出了代码示例。最后,文章通过一个效果演示说明了如何通过postman模拟上传文件,并展示了上传后的文件夹结构。
146 0
Next.js 实战 (六):如何实现文件本地上传
|
8月前
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
81 2
Node.js GET/POST请求
|
7月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
122 2
|
8月前
|
Python
axios的get请求传入数组参数
【10月更文挑战第11天】 当使用 `axios` 发送包含数组参数的 GET 请求时,默认的序列化方式可能与后端(如 Django)不兼容,导致无法正确获取数组参数。解决方案是通过 `paramsSerializer` 指定自定义序列化函数,或使用 `qs` 库来格式化数组参数,确保前后端一致。示例代码展示了如何使用 `qs` 库设置 `arrayFormat` 为 `&quot;repeat&quot;`,以符合 Django 的解析要求。
300 2
|
7月前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
100 0
|
8月前
|
前端开发 JavaScript UED
axios取消请求CancelToken的原理解析及用法示例
axios取消请求CancelToken的原理解析及用法示例
542 0
|
8月前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
462 0
|
8月前
|
资源调度 JavaScript

热门文章

最新文章

  • 1
    Vue中的axios深度探索:从基础安装到高级功能应用的全面指南
    216
  • 2
    JavaScript 使用axios库发送 post请求给后端, 给定base64格式的字符串数据和一些其他参数, 使用表单方式提交, 并使用onUploadProgress显示进度
    881
  • 3
    axios发送post请求,如何接受和返回一个axios的字段,解决bug的方法,困难的事情先从简单做起,先从发送一个axios的post请求做起,解决方法查别人的资料,查看F12看network就行
    105
  • 4
    文本,前后端数据交互,简单请求,如何去给data数据赋值,在mounted()里赋值,利用axios发送的请求,res就是数据集,就是后端的数据,this.users = res.data.data
    85
  • 5
    Request failed with status code 400,使用axios.post要发送参数,认真比对原项目,看看有没有忘记什么?
    219
  • 6
    vue3 在 watchEffect 里中断未完成的 axios 请求(只保留最后一次请求的方法---连续点击查询按钮的优化)
    219
  • 7
    前后端数据交互.js文件的axios的写法,想要往后端发送数据,页面注入API,await的意思是同步等待服务器数据,并返回,axios注入在其他页面,其他页面调用的时候,同步作用
    103
  • 8
    前后端数据交互,API风格组合式API和选项式API,setup是一个标识,组合式编写的意思,使定义count.value的值自增的写法,组合式API使用axios的写法,ref定义响应数据写法
    75
  • 9
    网页设计,若依项目修改(It must be done)02------axios封装后发get请求,axios请求的位置在呢?
    83
  • 10
    前后端数据交互之axios的路径怎样找?axios的路径是那个,是你打开Tomcat之后,出现的路径+你项目写的接口路径
    85