vue axios post请求向后台SpringMVC提交数据问题

昨天跟前端vue联调的时候,遇到了前端提交数据,我这边接收不到的问题。前端是vue 用axios发送post请求,后台是Springmvc接收数据。

一直在报“Spring MVC Content type ‘application/x-www-form-urlencoded’ not supported”这个错误,
也许两人都认为是对方的问题吧, 搞了一下午都没解决。

当前项目里面有表单提交的页面,都是可以正常提交且返回成功的,于是把两个请求拿出来对比,
发现了http协议Request payload 与format data的不同,于是让他加上了contentType: “application/json”,然并卵。
vue axios post请求向后台SpringMVC提交数据问题_第1张图片
后来想起了接口是加入了@RequestBody来接收数据的,把它删除后,
再次请求,通过debug发现拦截器中有数据了,然而走不到接口,就结束了。

在前端直接拼json字符串或者不转数据(qs和JSON),就会因为数据格式不对页面报跨域的错误。
通过JSON.stringify()转数据,拦截器收到的是整个json串作为key,value为空({{‘id’:‘1234’}=[]}),前端log的数据正常,Form Data 的数据json后边会有个“:”冒号;
通过qs.Stringify(),只有一层数据的话是正常的,但是里面再嵌套一层实体,后台就会报这个实体既不是数组也不是集合的问题。

在查找资料的时候看到了这篇文章(https://blog.csdn.net/weixin_39378691/article/details/83781478),
提到了给axios添加请求头!
vue axios post请求向后台SpringMVC提交数据问题_第2张图片
虽然问题到这儿没有解决,不过看到了 http协议已经不在是format data,而是 request payload,

于是把删掉的@RequestBody重新加上,再处理下后台请求头的问题,至此问题解决!

第一次写文章,谨以此记录这个问题。

你可能感兴趣的:(springmvc)