api接口模块封装

1:前端封装接口

前端请求的统一封装也是为了方便前端项目的请求维护起来更加方便,将页面中的请求封装到js文件中,不同的页面需要用到相同的请求可以直接进行复用。

第一步创建一个api文件夹和js文件

第二步:在文件中导入axios,如果axios被二次封装那导入封装之后的文件

第三步:在页面中导入js文件使用封装好的方法

 

2:使用Vant库中的Toast轻提示

 

这toast就相当于vue2中的this.$message.success('成功提示')

第一种方式:在使用的地方直接导入即可使用,这种是局部使用哪个文件需要用到就在哪个组件或者js文件中使用

如果在组件或非组件文件中导入都可以进行使用

第二种方式:直接挂载在Vue实例上面可以进行全局使用

 3:实现短信验证功能

主要在用户点击获取验证码时,开启定时任务初始值六十秒倒计时每秒扣减,为防止出现负数加入判断

3.1:实现倒计时效果

页面代码实现:

<div class="form-item">
<input v-model="picCode" class="inp" maxlength="5" placeholder="请输入图形验证码" type="text">
<img v-if="picUrl" :src="picUrl" @click="getImageCode" alt="请刷新">
</div>

数据区域: 

  data () {
    return {
      picUrl: null,
      picCode: '',
      picKey: '626115',
      msgCode: '',
      mobile: '15039465258',
      second: 60,
      totalSecond: 60,
      timer: null
    }
  },

 

注意:只要页面有定时器一定要注意在离开页面时候就给清除定时器,使至内存消耗减少 

 

3.2:倒计时校验

校验手机号和验证码是否符合规范填写

代码实现:

3.3:封装短信验证请求接口

点击获取短信验证码,校验手机号和图形验证码是否填写,校验通过调用短信验证码接口并开启计时器

封装调用短信验证码接口

获取验证码接口 

    getCode () {
      if (!this.validFn()) {
        return false
      }
      // 防止用户点击多次 加入判断
      if (!this.timer && this.second === this.totalSecond) {
        // 发送短信验证码
        getMsgCode(this.mobile).then(response => {
          this.$toast(response.data)
        })
        // 开启定时任务
        this.timer = setInterval(() => {
          this.second--
          // 防止倒计时扣减到负数加入判断停止定时任务
          if (this.second <= 0) {
            // 停止倒计时
            clearInterval(this.timer)
            this.timer = null
            // 重置倒计时
            this.second = this.totalSecond
          }
        }, 1000)
      }
      // 短信验证码发送成功
      this.$toast('短信验证码成功')
    },

 4:实现登录功能

点击登录,校验手机号,图形验证码,短信验证,调用登录接口,传值,返回状态200时登录成功提示,路由跳转

// 登录接口
export const login = (params) => {
  return request.post('/user/login', params)
}
login () {
      // 校验手机号和图形验证码
      if (!this.validFn()) {
        return false
      }
      // if (!this.picCode) {
      //   this.$toast('请输入图形验证码')
      //   return false
      // }
      if (!/^\d{6}$/.test(this.msgCode)) {
        this.$toast('请输入六位短信验证码')
        return false
      }
      // toast1.clear()
      const params = {
        phone: this.mobile,
        code: this.msgCode,
        key: this.picKey,
        imgCode: this.picCode
      }
      login(params).then(res => {
        if (res.status === 200) {
          this.$toast('登录成功')
          setTimeout(() => {
            // 将数据存放到vuex
            this.$store.commit('user/setUserInfo', res.data)
            this.$router.push('/home')
          }, 1000)
        }
      })
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/686363.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

精妙无比的App UI 风格

精妙无比的App UI 风格

springboot vue 开源 会员收银系统 (6) 收银台的搭建

前言 完整版演示 前面我们对会员系统 分类和商品的开发 完成了收银所需的基础信息 下面我们开始完成收银台的开发 简单画了一个收银的流程图大家参考下 从这张图我们可以分析一下几点 可以选择会员或散客收银选择会员使用相应的会员价结算使用会员卡则在价格基础根据卡折扣…

Day22 客户端添加IDialogService 弹窗服务

​ 本章节实现了首页点击待办事项或备忘录的时候,弹出一个对话服务窗口 当用户点击首页的“添加备忘录”或“待办事项”按钮时,系统应弹出一个对话框,以便用户执行相关的内容添加操作。下面就开始实现这个弹窗服务。 一.在Views文件夹中,再创建一个Dialog 文件夹,用于放置…

【Selenium+java环境配置】(超详细教程常见问题解决)

Seleniumjava环境配置 windows电脑环境搭建-chrome浏览器1. 下载chrome浏览器2. 查看chrome浏览器版本3. 下载chrome浏览器驱动4.配置系统环境变量PATH 验证环境是否搭建成功1. 创建java项目&#xff0c;添加pom文件中添加依赖2. 编写代码运行 常见问题&解决办法1.访问失败…

防病毒克星——白名单可信系统

白名单作为一种网络安全措施&#xff0c;其核心概念在于限制用户只能访问网络所有者定义的受信任内容。这种机制在保护系统免受恶意软件、病毒等攻击方面发挥着重要作用。然而&#xff0c;关于白名单是否可以防病毒的问题&#xff0c;实际上涉及了多个方面的考虑。 首先&#x…

【C++题解】1074 - 小青蛙回来了

问题&#xff1a;1074 - 小青蛙回来了 类型&#xff1a;需要找规律的循环 题目描述&#xff1a; 关于小青蛙爬井的故事&#xff0c;你应该早就听过了&#xff1a;井深10 尺&#xff0c;小青蛙从井底向上爬&#xff0c;每个白天向上爬 3 尺&#xff0c;每个晚上又滑下来 2 尺&…

基于Sentry+OpenTelemetry实现微服务前后端全链路监控

文章目录 前⾔背景技术⽅案Sentry私有化部署部署环境准备 项目集成前端后端agent探针集成sentry sdk集成增强探针为⽇志注⼊TraceID异常处理SDK⾃定义开发sentry sdk⾃定义开发⾃定义SentryEvent注⼊otel追踪信息⾃定义全局异常上报issue事件新增动态过滤功能 Java Agent Exten…

c++ 里函数选择的优先级:普通函数、模板函数、万能引用,编译器选择哪个执行呢?

看大师写的代码时&#xff0c;除了在类里定义了 copy 构造函数&#xff0c;移动构造函数&#xff0c;还定义了对形参采取万能引用的构造函数&#xff0c;因此有个疑问&#xff0c;这时候的构造函数优先级是什么样的呢&#xff1f;简化逻辑测试一下&#xff0c;如下图&#xff0…

MySQL主从同步优化指南:架构、瓶颈与解决方案

前言 ​ 在现代数据库架构中&#xff0c;MySQL 主从同步是实现高可用性和负载均衡的关键技术。本文将深入探讨主从同步的架构、延迟原因以及优化策略&#xff0c;并提供专业的监控建议。 MySQL 主从同步架构 ​ 主从复制流程&#xff1a; 从库生成两个线程&#xff0c;一个…

语言大模型qwen1.5全流程解析:微调,量化与推理

在前一篇文章中&#xff0c;主要使用llama-factory封装的推理模块对速度进行了测试&#xff0c;vllm速度快些&#xff0c;但仍没有传说中的快3-5倍&#xff0c;需要单独测试。这里使用qwen1.5-1.8B作为测试模型。 qwen1.5是qwen2的先行版&#xff0c;24年2月发布&#xff0c;与…

俯视角2D游戏_02 子弹对象池

[!NOTE] 对象池 应用场合:这种做法常用于子弹这种会大量产生的对象 &#xff0c;目的是减少性能的损耗 基本思路:产生的对象是有限的&#xff0c;并且加入到"对象池"的数组中不进行销毁&#xff0c;当需要使用时&#xff0c;再从对象池中提取对象循环利用&#xff0c…

玩物科技:引领物联网时代的创新先锋

在深圳这座充满活力和创新精神的城市&#xff0c;有一家年轻而充满潜力的公司正在悄然改变我们的日常生活。深圳市玩物科技有限公司自2017年成立以来&#xff0c;凭借其卓越的技术和创新理念&#xff0c;逐渐成为物联网时代的先锋力量。 玩物科技的愿景与使命 玩物科技的核心…

【Linux】进程(7):地址空间

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;7&#xff09;&#xff1a;地址空间&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 &#xff08;A&#xff09; 直接看代码&…

MATLAB基础应用精讲-【数模应用】二元Logit分析(最终篇)(附python、MATLAB和R语言代码实现)

目录 算法原理 SPSSAU 1、二元logistic分析思路说明 2、如何使用SPSSAU进行二元logistic操作 3、二元logistic相关问题 算法流程 一、分析前准备 1、确定分析项 2.多重共线性判断 3.数据预处理 二、回归基本情况分析 三、模型拟合评价 1、似然比检验 2、拟合优…

Linux - 深入理解/proc虚拟文件系统:从基础到高级

文章目录 Linux /proc虚拟文件系统/proc/self使用 /proc/self 的优势/proc/self 的使用案例案例1&#xff1a;获取当前进程的状态信息案例2&#xff1a;获取当前进程的命令行参数案例3&#xff1a;获取当前进程的内存映射案例4&#xff1a;获取当前进程的文件描述符 /proc中进程…

【GIS教程】土地利用转移矩阵

随着科技社会的不断进步&#xff0c;人类活动对地理环境的影响与塑造日益明显&#xff0c;土地不断的侵蚀与改变也导致一系列的环境问题日益突出。土地利用/覆盖&#xff08;LUCC&#xff09;作为全球环境变化研究的重点问题为越来越多的国际研究机构所重视&#xff0c;研究它的…

酷开系统丨酷开科技智慧AI 让家庭智能化近在眼前

科技改变生活&#xff0c;从3G-4G-5G&#xff0c;再到即将突破的6G&#xff1b;从传统有人驾驶的车辆到现在的无人驾驶车辆&#xff1b;从九十年代的大哥大“砖头”便携电话&#xff0c;到蓝绿屏按键手机、触摸屏手机&#xff0c;再到智能手机&#xff1b;从传统数字密码到现在…

信息系统项目管理师0146:输入(9项目范围管理—9.3规划范围管理—9.3.1输入)

点击查看专栏目录 文章目录 9.3 规划范围管理9.3.1 输入9.3 规划范围管理 规划范围管理是为了记录如何定义、确认和控制项目范围及产品范围,而创建范围管理计划的过程。本过程的主要作用是在整个项目期间对如何管理范围提供指南和方向。本过程仅开展一次或仅在项目的预定义点开…

【RuoYi】框架中使用wangdietor富文本编辑器

一、前言 在上篇博客中&#xff0c;介绍了RuoYi中如何实现文件的上传与下载&#xff0c;那么这篇博客讲一下如何在RuoYi中使用富文本编辑器&#xff0c;这部分的内容是向&#xff22;站程序员青戈学习的&#xff0c;当然我这里就会把学到的内容做一个总结&#xff0c;当然也会说…

信息系统项目管理师0147:工具与技术(9项目范围管理—9.3规划范围管理—9.3.2工具与技术)

点击查看专栏目录 文章目录 9.3.2 工具与技术 9.3.2 工具与技术 专家判断 规划范围管理过程中&#xff0c;应征求具备如下领域相关专业知识或接受过相关培训的个人或小组 的意见&#xff0c;涉及的领域包括&#xff1a;以往类似项目&#xff1b;特定行业、学科和应用领域的信息…