You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot控制器如何正确接收@RequestParam参数?空值问题排查

问题原因
  • 你当前使用@RequestParam注解接收参数,该注解仅能获取URL查询参数(即url后?key=value形式的参数) 或者Content-Type为x-www-form-urlencoded的表单提交参数,无法解析application/json格式的请求体内容,所以你从JSON请求体中传递的name、email都无法被识别,最终接收值为null。
正确实现方式

方案1:使用DTO接收JSON请求体(推荐,符合RESTful规范)

  1. 首先定义一个参数接收DTO类:
// 可配合Lombok的@Data注解省略getter、setter简化代码
public class StudentUpdateDTO {
    private String name;
    private String email;
    private LocalDate dob;
}
  1. 修改控制器方法,添加@RequestBody注解解析JSON请求体:
@PutMapping(path = "/{id}")
public ResponseEntity<?> updateStudent(@PathVariable("id") Long id, @RequestBody StudentUpdateDTO updateDTO) {
    Student savedStudent = studentService.updateStudent(id, updateDTO.getName(), updateDTO.getEmail());
    return ResponseEntity.ok(savedStudent);
}
  1. 发送请求时需确保请求头Content-Type设置为application/json,你当前的请求地址和请求体内容无需修改即可正常接收参数。

方案2:使用查询参数传递(无需修改现有控制器代码)

如果你不想调整后端代码,可修改请求方式,将name、email作为URL查询参数传递:
请求地址改为:
http://localhost:5000/api/v1/student/1?name=abc&email=abc@email.com
无需携带JSON请求体,即可正常接收参数。


内容的提问来源于stack exchange,提问作者wick3d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:18:04