由于最近做课设要写到登录注册的功能,免不了要进行前后端交互,但是太久没用这些知识都忘得差不多了,导致写一个小小的登录注册都耗费了不少时间,其中大部分时间花在了找为什么前端参数传不到后端上,经过在网上不断查找,最终解决了这个bug,下面分析一下这个问题的易出错点。
一、易出错点
1.使用GET请求时,参数名应该用params,参数会直接追加至请求字符串(url)后
使用POST请求时,使用data,参数是添加到请求体(body)的(博客来源:POST http://localhost:8080/XXX/XXX 400 (Bad Request)_小小程序w的博客-CSDN博客)
//get请求
axios({
method: "get",
url: "http://www.tuling123.com/openapi/api",
params: {
info: "BJ"
},
})
//post请求
axios({
method: "post",
url: "http://www.tuling123.com/openapi/api",
data: {
info: "BJ"
},
})
2.前端参数名及数据类型要与后端参数相同,前端用对象类进行传参时,后台接收对象封装的数据要用@RequestBoby接收,对象的每个属性名也必须与后端的对象属性名保持一致,属性个数也要相同。我原来是后端的实体对象比前端传的对象参数多了一个id属性,所以传不过去,改成一样就好了。
二、扩展
1.@RequestBody与@RequestParams
@RequestBody:
前端发送了一个POST请求,请求体中包含一个JSON对象,可以使用@RequestBody注解将其转换为Java对象
@RequestParams:
用于获取请求参数的值,可处理GET和POST请求
来源:Spring Boot中处理前端的POST请求参数_前端鼓励师的博客-CSDN博客
2.@RequestMapping、@GetMapping、@PostMapping
前端接收json传参,后端获取参数为空,变量数据类型不对:
SpringBoot中接收POST参数的几种方式详解_java_脚本之家