栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Vue3中使用Axios发送数据到SpringBoot

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Vue3中使用Axios发送数据到SpringBoot

在前后端分离的项目中,我们难免会遇到跨域或者接收的参数为空的问题,对于新手肯定是很难找到解决的办法。尤其是发送的数据中可能是文件和文本一起传输,这时候就会出现一些小问题,一般情况我们都是使用JSON格式传输数据,这时候就会导致数据接收不到。
因此,需要根据情况对数据进行分割,当然,如果不想使用JSON发送,采用传统的form表单则不会出现这种问题,但是在get请求中当参数很多的时候也有些麻烦。
在vue(下面的例子为vue3)项目中安装axios npm install axios --save
安装成功之后将axios导入项目中,注册到全局。
在项目src目录下创建一个目录,这里目录为util,在该目录下创建Axios.js文件,添加如下代码

import axios from "axios";
//请求拦截器
axios.defaults.baseURL='http://localhost:8081'//这是项目的base地址
axios.defaults.timeout=10000//超时时间
axios.interceptors.request.use((config) => {
//这里不添加请求头是因为我们发送的数据不一定都是json格式
	console.log("----------------",config.data)//在发送请求前可以添加token之类或者其他操作
	let flag = config.data.get("flag");//获取标志是否有文件或者json
	if(flag === 'file'){//设置请求头
		config.headers["Content-type"] = 'multipart/form-data';
	}
	else if(json === 'json' ){
		 config.headers["Content-type"] = "application/json;charset=UTF-8";
	}
	//在这里可以添加token
  return config//一定要返回,否则请求发不出去
}, (error) => {
  return error
})
//暴露出去
export default axios

将axios注册到全局组件中

import axios from './util/Axios.js'
const app = createApp(App)
app.config.globalProperties.$axios = axios
app.mount('#app')

到此axios基本配置已经完成。
在组件中使用axios发送数据

import {getCurrentInstance} from 'vue' //导入vue的实列对象,因为setup调用时vue还没有创建
export default{
		mixins:[mixins],
		setup() {
			const {proxy} = getCurrentInstance();
			//绑定的方法
			function change(){
				let formData = new FormData();//可以将form表单直接放入构造器,自动封装
				formData.append("username","123456");
				formData.append("flag",'file');//发送文件
				formData.append("password","123456");
				proxy.$axios.post("/index",formData).then((res)=>{
					console.log("-----OK-->",res)
				}).catch(err=>{
					console.log("-----Fail-->",err)
				})
			}
			return {
			//vue3特性要求
				change
			}
		}
	}

后端User对象

public class User {
    private String username;
    private String password;
}

上面formData是使用传统方式发给服务器的数据,如果只发送文本json(axios默认json格式),所以在发送强将formData转化为json即可,JSON.stringfly(formData)这是js自带,也可以导入qs,两者都可以,但在后端必须使用@RequstBody注解在参数中(@RequestBody User user),否则接收不到数据。
如果发送的数据带有文件,则使需要添加请求头'Content-Type': 'multipart/form-data',然后直接将formData放入即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036203.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号