Vue3前端表单用axios封装类向后端简单传值

编程入门 行业动态 更新时间:2024-10-11 23:22:14

Vue3前端<a href=https://www.elefans.com/category/jswz/34/1771263.html style=表单用axios封装类向后端简单传值"/>

Vue3前端表单用axios封装类向后端简单传值

    • 一、axios封装
    • 二、前端form表单
    • 三、导入工具类
    • 四、初始化表单的值
    • 五、利用axios封装类请求后端路径,传递表单中的数值
    • 后端接口
    • 前端完整代码

以简单的修改密码为例

一、axios封装

axios.js

// 引入axios
import axios from 'axios';
import {ElMessage} from "element-plus";// 创建axios实例
const httpService = axios.create({// url前缀-'http:xxx.xxx'// baseURL: process.env.BASE_API, // 需自定义baseURL:'http://localhost:8080/',// 请求超时时间timeout: 3000 // 需自定义
});//添加请求和响应拦截器
// 添加请求拦截器
httpService.interceptors.request.use(function (config) {// 在发送请求之前做些什么config.headers.token=window.sessionStorage.getItem('token');return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});// 添加响应拦截器
httpService.interceptors.response.use( response=> {// 对响应数据做点什么return response;
},function (error) {// 对响应错误做点什么return Promise.reject(error);
});/*网络请求部分*//**  get请求*  url:请求地址*  params:参数* */
export function get(url, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'get',params: params}).then(response => {resolve(response);}).catch(error => {reject(error);});});
}/**  post请求*  url:请求地址*  params:参数* */
export function post(url, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'post',data: params}).then(response => {console.log(response)resolve(response);}).catch(error => {console.log(error)reject(error);});});
}/**  文件上传*  url:请求地址*  params:参数* */
export function fileUpload(url, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'post',data: params,headers: { 'Content-Type': 'multipart/form-data' }}).then(response => {resolve(response);}).catch(error => {reject(error);});});
}export default {get,post,fileUpload
}

二、前端form表单

<template><div><el-card style="width: 40%; margin: 10px"><el-form ref="formRef" :model="form" label-width="80px" :rules="rules" ><el-form-item label="原密码" prop="password"><el-input v-model="form.password" show-password ></el-input></el-form-item><el-form-item label="新密码" prop="newPass"><el-input v-model="form.newPass" show-password ></el-input></el-form-item><el-form-item label="确认密码" prop="confirmPass"><el-input v-model="form.confirmPass" show-password ></el-input></el-form-item></el-form><div style="text-align: center"><el-button type="primary" @click="changePsss">保存</el-button></div></el-card></div>
</template>

三、导入工具类

`import { ref } from 'vue'import  axios from '@/util/axios'`

四、初始化表单的值

const form=ref({   //表单设置的参数名要和后端所需参数对应password:'',newPass:'',confirmPass:'',id:''
})
const formRef=ref(null)  

五、利用axios封装类请求后端路径,传递表单中的数值

输入表单后,将form.vaule传给后端

axios.post(“admin/modifyPassword”,form.value);

后端接口

@RestController
public class AdminController {@Autowiredprivate IAdminService adminService;@PostMapping("/admin/modifyPassword")    			public R modifyPassword(@RequestBody Admin admin){Admin select = adminService.getById(admin.getId());if (!Objects.equals(select.getPassword(), admin.getPassword())){return R.error("原密码错误");}adminService.updatePass(admin);return R.ok();}
}

前端完整代码

<template><div><el-card style="width: 40%; margin: 10px"><el-form ref="formRef" :model="form" label-width="80px" :rules="rules" ><el-form-item label="原密码" prop="password"><el-input v-model="form.password" show-password ></el-input></el-form-item><el-form-item label="新密码" prop="newPass"><el-input v-model="form.newPass" show-password ></el-input></el-form-item><el-form-item label="确认密码" prop="confirmPass"><el-input v-model="form.confirmPass" show-password ></el-input></el-form-item></el-form><div style="text-align: center"><el-button type="primary" @click="changePsss">保存</el-button></div></el-card></div>
</template>
<script setup>
import { ref } from 'vue'
import  axios from '@/util/axios'
import {ElMessage} from "element-plus";const rules=ref({password:[{required: true,message: '请输入密码!',},],newPass:[{required: true,message: '请输入新密码!',},],confirmPass:[{required: true,message: '请输入确认新密码!',},]
})
const form=ref({password:'',newPass:'',confirmPass:'',id:''
})
const formRef=ref(null)   
const changePsss=()=>{formRef.value.validate(async (valid) => {if (valid) {if(form.value.newPass!==form.value.confirmPass){  // 判断确认新密码是否正确ElMessage.error("两次新密码输入不一致!");}else{ // 带上用户名和新密码 请求后端try{  //登录时存一下用户信息let admin = sessionStorage.getItem("admin")?JSON.parse(sessionStorage.getItem("admin")) : null;form.value.id=admin.idlet result=await axios.post("admin/modifyPassword",form.value);let data=result.data;if(data.code===0){ElMessage.success("密码修改成功,重新登录后生效");formRef.value.resetFields();}else{ElMessage.error(data.msg);}}catch(err){console.log("error:"+err)ElMessage.error('系统运行出错,请联系管理员');}}} else {return false}})
}
</script>
<style scoped>
</style>

更多推荐

Vue3前端表单用axios封装类向后端简单传值

本文发布于:2024-03-09 02:58:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723518.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表单   后端   简单   axios

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!