前端发送请求到后端报400错误问题

目录

错误信息

xhr.js:178 DELETE http://127.0.0.1:8081/deleteSpuInfoById?spuId=85 400
createError.js:16 Uncaught (in promise) Error: Request failed with status code 400

错误原因

  • 前端
// 根据spuId删除Spu
  deleteSpuInfoById(spuId) {
    debugger
    return request({
      url: 'deleteSpuInfoById?spuId=' + spuId,
      method: 'delete'
    })
  },
  • 后端
@DeleteMapping("deleteSpuInfoById")
public Result deleteSpuInfoById(@RequestBody String spuId){
	//省略....
}
  • 复制并更改方法的时候,注解@RequestBody方法未删除,导致前端发送的属性名和后端实体类的属性名不对应

总结

  • 一般情况下,前端发送请求到后端,报400是由于前后端json对象中的属性名与后端接收请求的实体类的属性名不对应(完全相同)引起的。排除400错误的方法如下:
  1. 前端发送的属性名和后端实体类的属性名不对应
  • 解决方法:检查前端发送的Json对象中的属性名与后端接收请求参数的实体类对象的属性名是否对应(名称必须相同),前端发送的JSON对象的属性值后端实体类的属性中必须有,也就是说前端发送的JSON对象中的属性后端接收的实体类中必须要包含JSON对象中的所有属性,也就是说实体类中的属性可以比JSON中属性多,但是不能比JSON对象中的属性少
  1. 前端发送的属性名和后端实体类的属性名都对应
  • 解决方法:这种情况下报400是由于实体类中的属性名中有首字母大写的变量存在,切记接收请求的实体类中的属性中不能有首字母大写的变量名存在,否则也会报400错误,将实体类中的首字母大写的属性改为首字母小写,前端也对应修改即可!!!
上一篇:AtCoder题解 —— AtCoder Beginner Contest 185 —— A - ABC Preparation


下一篇:移动端绑定点击和长按事件