【信贷后台管理系统之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.hqwc.cn/news/587871.html

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

相关文章

Vue-Next-Admin:适配手机、平板、PC的开源后台管理模板

摘要&#xff1a;随着移动设备和PC的普及&#xff0c;为了满足不同设备的需求&#xff0c;开发一个能够自适应手机、平板和PC的后台管理系统变得至关重要。本文将介绍一个基于Vue3.x、Typescript、Vite、Element Plus等技术的开源模板库——Vue-Next-Admin&#xff0c;帮助开发…

Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

flink on yarn

前言 Apache Flink&#xff0c;作为大数据处理领域的璀璨明星&#xff0c;以其独特的流处理和批处理一体化模型&#xff0c;成为众多企业和开发者的首选。它不仅能够在处理无界数据流时展现出卓越的实时性能&#xff0c;还能在有界数据批处理上达到高效稳定的效果。本文将简要…

网络协议学习——HTTPS

目录 ​编辑 一&#xff0c;认识HTTPS 二&#xff0c;加密方式 1&#xff0c;对称式加密 2&#xff0c;非对称式的加密 3&#xff0c;数据指纹&#xff08;数据摘要&#xff09; 4&#xff0c;数据签名 三&#xff0c;HTTPS的工作原理 实现方式 数字证书 一&#xff0c…

pygame--坦克大战(二)

加载敌方坦克 敌方坦克的方向是随机的&#xff0c;使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/e…

Golang学习系列1-pprof性能调优

1. pprof 简述 一位亦师亦友的话让我记忆犹新&#xff0c;他说“学习一个新事务&#xff0c;应该从三个方面入手what,why,how;且三者的重要程度应该是递减”。所以在本文的第一部分先叙述下pprof的what & why。 1.1 What&#xff1f; pprof是golang自身提供的一种性能分…

大模型量化技术-GPTQ

大模型量化技术-GPTQ 2022年,Frantar等人发表了论文 GPTQ:Accurate Post-Training Quantization for Generative Pre-trained Transformers。 这篇论文详细介绍了一种训练后量化算法,适用于所有通用的预训练 Transformer模型,同时只有微小的性能下降。 GPTQ算法需要通过…

剑指offer打卡 JZ6 从尾到头打印链表

在牛客网刷的&#xff0c;还是跟leetcode一样非acm模式&#xff0c;由于急着暑期实习题量不固定&#xff0c;八股算法轮刷 打卡内容偏个人笔记&#xff0c;本人水平一般(代码随想录稀里糊涂刷了一遍)&#xff0c;从小白开始分析(甚至会分析语法)&#xff0c;尽量一题多解深入探…

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…

不同设备使用同一个Git账号

想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法&#xff0c; 依次输入 git config user.name git config user.email第2种方法&#xff0c; 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…

C-偶遇行军蚁(遇到过的题,做个笔记)

我的代码: 思路就是把每一行看成一个字符串&#xff0c;然后逐渐增加字符就行 #include <iostream> #include <vector> using namespace std; int main() {string s;int n;cin >> n; //读入行数cin >> s; //读入字符串vector<string>arr(n…

黄金票据制作

1、黄金票据 黄金票据在内网渗透中主要用于权限维持&#xff0c;即留下后门。使用黄金票据前提是你已经控制了整个域的域控制器。其核心原理与服务器中的krbtgt用户相关。从以下可以了解krbtgt原理&#xff1a; 前言 | windows protocolhttps://daiker.gitbook.io/windows-pro…