Spring Controller接口通过Postman传日期报400错误,请求排查
排查Spring Boot接口400 Bad Request问题:checkMeetingRoomAvailability接口调用失败
我看了你的代码和请求参数,最可能的问题出在日期格式的解析上,咱们一步步来排查:
1. 12小时制vs24小时制的格式错误
你的@DateTimeFormat注解里用的是hh:mm:ss,这代表12小时制的时间格式,但你请求里传的是14:30:00——这是24小时制的时间,14点在12小时制里是无效值,Spring没法解析这个时间,直接返回400错误。
解决方法:把日期格式里的hh改成HH(大写H代表24小时制),修改后的注解应该是:
@DateTimeFormat(pattern = "dd-M-yyyy HH:mm:ss")
2. 其他可能的排查点
如果改完格式还是报错,可以检查这几点:
- 确认Postman用的是GET请求,因为你的接口标注的是
@GetMapping,用POST请求也会返回400 - 检查参数名是否完全匹配:你的接口参数是
begin、end、capacity,请求里的参数名要完全一致(Spring默认区分大小写) - 确认
@DateTimeFormat注解导入的是正确的包:org.springframework.format.annotation.DateTimeFormat,别导入了其他框架的同名注解 - 检查日期参数的格式是否严格匹配:比如请求里的日期是
30-9-2020,你的格式是dd-M-yyyy,这里M可以匹配单/双位数的月份,是没问题的,但如果是MM的话就需要传09,这点你当前是对的
验证方法
修改格式后,重新用Postman调用接口,应该就能正常解析日期参数了。如果还是有问题,可以看一下Spring的控制台日志,里面会有具体的参数绑定错误信息,能帮你更快定位问题。
内容的提问来源于stack exchange,提问作者user13963969
相关产品推荐
相关产品推荐

