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

Spring Boot接口接收LocalDateTime参数返回400 Bad Request问题咨询

错误根因
  • 你使用@RequestParam注解接收参数,该注解仅能读取URL查询参数、表单提交参数,无法读取application/json格式的请求体内容,Spring找不到匹配的localDateTime入参,直接返回400错误。
  • @DateTimeFormat注解仅对查询参数、表单参数的转换生效,JSON请求体的序列化/反序列化由Jackson组件处理,该注解对JSON场景无效。
解决方案

方案1:保留JSON请求体传参(推荐)

  1. 定义接收请求体的DTO类,字段上加Jackson提供的@JsonFormat注解指定时间格式:
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;

public class DateRequest {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime localDateTime;

    // 补全getter、setter方法
    public LocalDateTime getLocalDateTime() {
        return localDateTime;
    }

    public void setLocalDateTime(LocalDateTime localDateTime) {
        this.localDateTime = localDateTime;
    }
}
  1. 调整Controller接口,用@RequestBody注解修饰入参:
@RestController
public class Controller {
    @PostMapping(path ="/date",consumes="application/json",produces="application/json")
    public String dateTime(@RequestBody DateRequest request) {
        return request.getLocalDateTime().toString();
    }
}

提示:Spring Boot 2.x及以上版本默认已集成JSR310时间类型的Jackson序列化支持,无需额外引入依赖

方案2:改用查询参数传参

如果你不需要用JSON传参,可直接将参数放到URL查询参数中,原代码不需要修改,直接调用如下地址即可:
POST http://localhost:8080/date?localDateTime=2021-06-08T11:39:01

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:36:03