vue登录页面

ops/2024/10/20 0:28:49/

这里写目录标题

  • 登录业务流程
    • 表单如何进行校验
      • 自定义校验规则
      • 整个表单的统一内容校验
    • 封装登录接口
      • axios的二次封装
      • 整个项目api的统一管理
    • 调用接口

登录业务流程

在这里插入图片描述

表单如何进行校验

ElementPlus表单组件内置了表单校验功能,只需要按照组件要求配置必要参数即可
在这里插入图片描述
1.按照接口字段准备表单对象并绑定。
2.按用户需求准备规则对象并绑定。
3.指定表单域的校验字段名。
4.把表单对象进行双向绑定

自定义校验规则

在这里插入图片描述

整个表单的统一内容校验

思考:每个表单域都有自己的校验触发事件,如果用户一上来就点击登录怎么办呢?
答:在点击登录时需要对所有需要校验的表单进行统一校验.
在这里插入图片描述
1.获取form组件实例
用在form中定义ref=formRef“”
其中const formRef = ref(null)
2.调用实例方法
如上图。

封装登录接口

axios的二次封装

1.创建axios实例,有基础URL,还有请求的超时时间等。
axios.creat()用于创建一个新的axios实例。这个函数接受一个配置对象作为参数,允许你自定义该实例的默认配置。
baseURL这是配置对象中的一个属性.
timeout这也是配置对象中的一个属性,用于定义请求的超时时间(以毫秒为单位)。
在这里插入图片描述
2.请求拦截器。
使用instance.interceptors.request.use()添加一个请求拦截器。在这个拦截器中,你可以在请求发送之前对请求配置进行修改。如果请求拦截器中出现错误,将返回一个被拒绝的Promise,错误信息是new Error(error)。在这里插入图片描述

3.响应拦截器。
使用instance.interceptors.response.use()添加一个响应拦截器。在这个拦截器中,你可以对响应数据进行处理。在这里插入图片描述
拦截器首先从响应数据中解构出code、message和data字段。
如果code等于200(表示请求成功),则直接返回data。
如果code不等于200,则使用ElMessage.error()显示错误信息(如果响应中有message则显示message,否则显示"网络错误")。然后返回一个被拒绝的Promise,错误信息也是message或"网络错误"。
4.封装请求函数。
定义一个request函数,该函数接受一个options对象作为参数,该对象包含了请求的配置信息。
在这里插入图片描述
在request函数中,如果options没有指定method,则默认使用"GET"方法。
使用之前创建的axios实例(instance)来发起请求,并返回这个请求的Promise。
5.导出
使用export default request;导出request函数,使得其他模块可以引入并使用这个封装好的请求函数。在这里插入图片描述

整个项目api的统一管理

目的是封装一个用于处理请求的API调用,使得在项目的其他部分调用API时更加简洁和统一。
1.导入request模块
在这里插入图片描述
这行代码从项目的utils目录下的request模块中导入了request函数。这个函数是一个基于某个HTTP客户端(如axios、fetch等)的封装,用于发送HTTP请求
2.定义相应的函数。定义了一个名为loginApi的导出常量,它本身是一个函数,接收一个对象作为参数,这个对象包含username和password两个属性。这两个属性分别代表用户的用户名和密码。
在这里插入图片描述
3.使用request函数发送请求
在loginApi函数的函数体内,它调用了request函数,并传入了一个对象作为参数。这个对象指定了请求的URL(“/login”)、方法(“post”)和发送的数据(一个包含username和password的对象)。这意味着loginApi函数会向服务器的/login端点发送一个POST请求,请求体中包含用户的用户名和密码。
在这里插入图片描述
4.返回值
loginApi函数返回了request函数的调用结果。这意味着request函数的返回值(通常是一个Promise对象,代表了异步HTTP请求的结果)将被loginApi函数返回给它的调用者。调用者可以进一步处理这个Promise对象,比如使用.then()和.catch()方法来处理请求成功或失败的情况。

调用接口

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4c7e814f85574dd5986bacec27bc866e.png在这里插入图片描述

跳转页面用router.replace(),这个是不可以返回上一页。router.push()可以返回上一页。
useRoute获取参数,useRouter调用方法。import { useRouter } from “vue-router”;const router = useRouter();


http://www.ppmy.cn/ops/126841.html

相关文章

vue video播放m3u8监控视频

很关键的问题 vite创建的项目不需要import ‘videojs-contrib-hls’ 导入就报错 直接添加如下代码即可 html5: {vhs: {overrideNative: true},nativeVideoTracks: false,nativeAudioTracks: false,nativeTextTracks: false} 下面是完整组件示例 <template><div>…

YashanDB学习-数据库SQL基础操作

YashanDB学习-数据库SQL基础操作 1、 创建用户、创建角色、授权用户、切换用户、修改密码2、表空间3、表4、索引5、数据6、事务 1、 创建用户、创建角色、授权用户、切换用户、修改密码 注&#xff1a;切换对象须具有登录会话的权限方可进行切换操作 # 创建用户 账号yashan 密…

代码复现(五):GCPANet

文章目录 net.py1.class Bottleneck&#xff1a;残差块2.class ResNet&#xff1a;特征提取3.class SRM&#xff1a;SR模块4.class FAM&#xff1a;FIA模块5.class CA&#xff1a;GCF模块6.class SA&#xff1a;HA模块7.class GCPANet&#xff1a;网络架构 train.pytest.py 论文…

【分布式微服务云原生】探索RESTful API:构建高效网络服务的秘诀

探索RESTful API&#xff1a;构建高效网络服务的秘诀 摘要&#xff1a; 在本文中&#xff0c;我们将深入探讨RESTful API的核心原则、设计最佳实践&#xff0c;并提供实际的Java代码示例和流程图。您将了解到如何利用HTTP方法、资源定位、状态码等关键概念来设计和实现一个高效…

关于使用conda和pip二者安装包

想安装另外的不在Anaconda中的Python包&#xff1a; 方式1&#xff1a;conda install package_name 方式2&#xff1a;pip install package_name 想升级另外的不在Anaconda中的Python包&#xff1a; conda update package_name pip install --upgrade package_name 注意&am…

【Petri网导论学习笔记】Petri网导论入门学习(五)—— 1.3 库所/变迁系统与加权Petri网

导航 1.3 库所/变迁系统与加权Petri网定义1.10P/T系统组成原型Petri网P/T系统与Petri网的转化示例 1.3 库所/变迁系统与加权Petri网 库所/变迁系统&#xff08;简称P/T系统&#xff09;&#xff08;Place/Transition&#xff09;在原型Petri网上增加了 S S S上的容量函数和 F …

Redis缓存穿透

缓存穿透 什么是缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库 解决缓存穿透的方法 解决缓存穿透有两种方案: 1.缓存空对象 优点:实现简单,维护方便 缺点:额外的内存消耗;可能存在短期的不一致(缓存null…

进入 Searing-66 火焰星球:第一周游戏指南

Alpha 第四季已开启&#xff0c;穿越火焰星球 Searing-66&#xff0c;带你开启火热征程。准备好勇闯炙热的沙漠&#xff0c;那里有无情的高温和无情的挑战在等待着你。从高风险的烹饪对决到炙热的冒险&#xff0c;Searing-66 将把你的耐力推向极限。带上充足的水&#xff0c;天…