使用带有 localDateTime 的 Spring Boot 时出现 400 Bad Request

问题描述

我正在向 web 发送一个带有正文的 Http POST 请求

rewrite

(我尝试了多种不同的时间格式,总是同样的错误) 到我使用 Spring Boot 构建的 Java 应用程序。

http://localhost:8080/date

我知道 Spring Boot 有点棘手,但我读到 { "localDateTime": "2021-06-08T11:39:01" } 注释应该允许它正确地将字符串转换为日期对象。

相反,我收到了 @RestController public class Controller { @PostMapping(path ="/date",consumes="application/json",produces="application/json") public String dateTime(@RequestParam(name = "localDateTime") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime localDateTime) { return localDateTime.toString(); } } 错误。怎么了?

解决方法

请删除 consumes="application/json",produces="application/json",您已经在使用 RestController 注释。

如果要将 JSON 作为正文发送,请将 @RequestParam 更改为 @RequestBody。对 /date?localDateTime=2021-06-08T11:39:01 使用 @RequestParam。

What is difference between @RequestBody and @RequestParam?