【信贷后台管理系统之axios的二次封装(四)】

文章目录

  • 一、axios的二次封装
  • 二、配置后端接口地址
  • 三、登录接口api联调
  • 四、贷款申请接口api编写联调


一、axios的二次封装

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
src下新建utils,新建request.js用来封装axios
控制台安装axios依赖
在这里插入图片描述
在request.js文件里引入axios,router
requeset.js文件代码如下:

import axios from 'axios'import router from '@/router'import { Notification,Message} from "element-ui";const requset = axios.create({// 添加api前缀baseURL:'/api',// 请求过期时间timeout:5000}
)// 请求拦截器
requset.interceptors.request.use(config=>{// 给header添加tokenlet token = localStorage.getItem('token')if(token){config.headers.token = token}return config
})// 响应拦截器
requset.interceptors.response.use(response=>{// 后端状态码20000表示成功if(response?.data?.code === 20000){// 后端返回的结构没有统一,兼容处理一下if (typeof response?.data?.data === 'string')Message.success(response?.data?.data)if (typeof response?.data?.data?.info === 'string')Message.success(response?.data?.data?.info)return response}else if(response?.data?.code === 603){// 603表示token失效Notification.error({title:'错误',message:'token失效,请重新登录'})// 替换到登录页面let url = window.location.href.split('/')if (url[url.length - 1] !== 'login'){router.replace('/login')}}else{if(response?.status !== 200){Notification.error({title:'错误',message:'响应错误'})}}return response}
)
export default requset

二、配置后端接口地址

在vue.config.js里,设置代理服务器

三、登录接口api联调

src下新建api文件,user.js,引入封装的reques(axios的二次封装),登录后可以打印20000数据,打印出token,然后将token加上
在这里插入图片描述

user.js代码如下:

import request from "@/utils/request";export const  doLogin=(user)=>{return request.post('/user/login',{account:user.username,password:user.pass})
}

接口api文件写好后,到LoginView.vue文件引入import {doLogin} from "@/api/user";引入后进行调用
在这里插入图片描述
LoginView.vue代码如下

<template><div class="login-box"><div class="login-input-box"><h1>信贷后台管理系统</h1><el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="70px" class="demo-ruleForm"><el-form-item label="用户名" prop="username"><el-input  v-model="ruleForm.username" autocomplete="off"></el-input></el-form-item><el-form-item label="密码" prop="pass"><el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm('ruleForm')">提交</el-button></el-form-item></el-form></div></div></template><script >
import {doLogin} from "@/api/user";export default {data(){// 密码校验,长度不小于8位且不大于20位字符,必须包含大写字母,小写字母,数字和特殊符号// var ISPWD =/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$/;// // 密码校验// const validatePass = (rule, value, callback) =>{//   if (!ISPWD.test(this.registerForm.password)) {//     callback(new Error("用户密码必须包含大写字母、小写字母、数字和特殊符号"));//   } else {//     callback();//   }// }// const validatePass = (rule,value,callback){//   if(this.ruleForm.pass === '') {//     callback(new Error('请输入密码'))//   }else if(this.ruleForm.pass.length < 6){//     callback(new Error('密码长度不能小于6'))//   }else{//     callback();//   }// },return{ruleForm: {username:'',pass:'',},rules:{username: [{required:true,trigger:'blur',message:'请输入用户名'}],pass:[{required:true,trigger:'blur',validator:this.validatePass},],},};},methods:{// 校验规则validatePass(rule,value,callback){if (value === ""){callback(new Error("请输入密码"));}else if (value.length < 6){callback(new Error("密码不能小于6位数"));}else{callback();}},submitForm(){// 验证规则this.$refs.ruleForm.validate((valid) => {if (valid) {this.login(this.ruleForm);}else{return false;}});},async login(form){console.log(form);let res = await doLogin(form);if(res.data.code === 20000){if(res?.data?.data?.token){localStorage.setItem("token",res.data?.data?.token);}this.$router.replace("/home");
}},},
};</script><style lagn="scss" scoped>
.login-box{display: flex;   /* div可成为flex容器*/justify-content: center;  /*上面贴着父元素,居于中间*/align-items: center;  /* 左侧贴着父元素,把项目位置调整到中间 */height: 100vh; /* 元素撑开和屏幕一致*/background-image: url("../assets/login-background.jpg");background-size: cover;
}
.login-input-box{width: 650px;height: 320px;background-color: #fff;text-align: center;padding: 40px 40px 12px 12px;
}
.el-button{width: 600px;
}
.el-input{width: 600px;margin-bottom: 16px;
}
::v-deep .el-input_inner{background: #e5e5e5;
}
</style>

在request.js里的请求拦截器添加个token
在这里插入图片描述

四、贷款申请接口api编写联调

在src下新建api文件,该文件下新建loan.js,引入request
loan.js代码如下

import requset from "@/utils/request";
export const createLoan =(data)=>{return requset({url:'/loan/create',method:'POST',data})
}

在src文件的views的loan文件下的IndexView.vue文件里引入并使用
引入import {createLoan} from "@/api/loan";
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中科驭数超低时延网络解决方案入选2023年度金融信创优秀解决方案

近日&#xff0c;由中国人民银行领导、中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布「2023年度第三期金融信创优秀解决方案」&#xff0c;中科驭数超低时延网络解决方案从众多方案中脱颖而出&#xff0c;成功入选&#xff0c;代表了该方案的技术创新和金融实践…

共享社会经济路径(SSP1-5)中国及分省人口预估数据库_v2

v1数据集&#xff1a; 在共享社会经济路径&#xff08;SSPs&#xff09;全球框架下&#xff0c;根据本地化人口和经济参数&#xff0c;采用人口-发展-环境&#xff08;PDE&#xff09;模型&#xff0c;构建2020-2100年SSPs人口格点数据&#xff1b;采用柯布-道格拉斯&#xff…

网络钓鱼升级 Darcula如何窃取用户信息

近日&#xff0c;网络安全领域一种名为 “Darcula” 的网络钓鱼欺诈&#xff08;PhaaS&#xff09;悄然兴起。这种新型钓鱼方式不同于传统的手段&#xff0c;它巧妙地利用了谷歌信息和 iMessage 的富通信服务&#xff08;RCS&#xff09;&#xff0c;成为了网络犯罪分子的新手段…

基于springboot实现学生读书笔记共享平台系统项目【项目源码+论文说明】

基于springboot实现学生读书笔记共享平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个读书笔记共享平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者…

Linux——软件管理

目录 Linux应用程序基础 应用程序与系统命令的关系 典型应用程序的目录结构 常见的软件包封装类型 RPM包管理机制 使用YUM源 使用YUM源管理软件的步骤 1、配置YUM源配置文件 2、清空YUM源缓存 yum clean all 3、安装软件 yum install httpd 基本 …

【随笔】Git -- 高级命令(下篇)(八)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

ConcurrentHashMap线程安全机制

put源码&#xff1a; public V put(K key, V value) {return putVal(key, value, false); }/** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) {if (key null || value null) throw new NullPointerException();int has…

vue快速入门(二)安装vue调试插件

教程很详细&#xff0c;直接上过程 上一篇 新增内容 在国内网站下载谷歌插件安装插件 点击跳转极简插件 此处我们以Chrome浏览器为例 到这里我们就成功安装了插件 使用上一篇博客的代码在浏览器F12调试一下 这样就可以使用了&#xff01;&#xff01;&#xff01;

云原生时代来了,遗留的虚拟机怎么办?红帽 OpenShift 虚拟化实现“稳敏兼得”

作者 | 宋慧 出品 | CSDN 从云原生、容器、微服务&#xff0c;到现在大热的 AIGC、GPU&#xff0c;越来越多的技术与架构正在进入数据中心与基础设施中&#xff0c;以服务数字化转型中的创新业务与应用。在成熟虚拟化传统&#xff08;稳态&#xff09;业务和容器、新&#xff…

Vue-05

v-model 应用于其他表单元素 常见的表单元素都可以用v-model绑定关联 → 快速获取或设置表单元素的值 它会根据控件类型自动选取正确的方法来更新元素 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name…

【PFA树脂交换柱】实验室高纯PFA材质过滤柱耐受电子级氢氟酸含氟树脂层析柱

PFA离子交换柱&#xff0c;也叫PFA层析柱、PFA过滤柱等&#xff0c;其原理是利用吸附剂对不同化合物有不同吸附作用和不同化合物在溶剂中的不同溶解度&#xff0c;用适应溶剂使混合物在填有吸附剂的柱内通过&#xff0c;使复杂的混合物达到分离和提纯的目的。 柱体为透明PFA材…

Centos7 elasticsearch-7.7.0 集群搭建,启用x-pack验证 Kibana7.4用户管理

前言 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心&#xff0c;它集中存储您的数据&#xff0c;帮助您发现意料之中以及意料之外的情况。 环境准备 软件 …

【Linux】自定义协议+序列化+反序列化

自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子&#xff0c;不过这是感性的认识&a…

Kafka入门到实战-第二弹

Kafka入门到实战 Kafka快速开始官网地址Kafka概述Kafka术语Kafka初体验更新计划 Kafka快速开始 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://kafka.apache.org/Kafka概述 Apache Kafka 是一个开源的分布式事件流…

【SQL Server】2. 将数据导入导出到Excel表格当中

最开始&#xff0c;博主介绍一下自己的环境&#xff1a;SQL Sever 2008 R2 SQL Sever 大致都差不多 1. 通过自带软件的方式 首先找到下载SQL Sever中提供的导入导出工具 如果开始界面没有找到自己下载的路径 C:\Program Files\Microsoft SQL Server\100\DTS\Binn下的DTSWiz…

整理开源资源:零代码开发灵魂——逻辑引擎,收藏吧

逻辑配置是零代码开发的业务核心功能&#xff0c;本质上是实现服务的编排&#xff0c;把原子的服务通过可视化编排&#xff0c;形成最终的业务逻辑。 经过小编的精心整理&#xff0c;把相关的资源全部汇总起来&#xff0c;收藏吧&#xff01; Drawflow 拖动节点多路输入/输出…

增强Java技能:使用OkHttp下载www.dianping.com信息

在这篇技术文章中&#xff0c;我们将探讨如何使用Java和OkHttp库来下载并解析www.dianping.com上的商家信息。我们的目标是获取商家名称、价格、评分和评论&#xff0c;并将这些数据存储到CSV文件中。此外&#xff0c;我们将使用爬虫代理来绕过任何潜在的IP限制&#xff0c;并实…

python3内置持久化模块shelve心得

python3内置持久化模块shelve心得 来自python官方网站的解释&#xff1a; https://docs.python.org/zh-cn/3.10/library/shelve.html 本文环境&#xff1a; Windows 10 专业版 64 位 Thonny 3.2.6 概述 内置模块 shelve 可以将任意 Python 对象&#xff08;即 https://docs…

基于FPGA的HDMI视频接口设计

HDMI介绍 HDMI(High-DefinitionMultimedia Interface)又被称为高清晰度多媒体接口,是首个支持在单线缆上传输,不经过压缩的全数字高清晰度、多声道音频和智能格式与控制命令数据的数字接口。HDMI接口由Silicon Image美国晶像公司倡导,联合索尼、日立、松下、飞利浦、汤姆逊、东…

LLM面面观之MoE

1. 背景 根据本qiang~最新的趋势观察&#xff0c;基于MoE架构的开源大模型越来越多&#xff0c;比如马斯克的Grok-1(314B), Qwen1.5-MoE-A2.7B等&#xff0c;因此想探究一下MoE里面的部分细节。 此文是本qiang~针对大语言模型的MoE的整理&#xff0c;包括原理、流程及部分源码…