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

2024-04-03 07:36

本文主要是介绍【信贷后台管理系统之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";
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于【信贷后台管理系统之axios的二次封装(四)】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872294

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

一文详解如何在Vue3中封装API请求

《一文详解如何在Vue3中封装API请求》在现代前端开发中,API请求是不可避免的一部分,尤其是与后端交互时,下面我们来看看如何在Vue3项目中封装API请求,让你在实现功能时更加高效吧... 目录为什么要封装API请求1. vue 3项目结构2. 安装axIOS3. 创建API封装模块4. 封装API请求

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表