这是我的Get
请求:
@GetMapping("/stats/{fromDate}/{toDate}")
public StatsSummary getStatsSummary(@PathVariable String fromDate, @PathVariable String toDate) {
logger.info("Calculating statistics between" + fromDate + ",to" + toDate);
return statsService.getStatsSummary(fromDate, toDate);
}
我尝试将注释@NotBlank
添加为:
public StatsSummary getStatsSummary(@PathVariable String fromDate, @PathVariable @NotBlank String toDate) {
但是当我调用不包括CCD_ 4的CCD_
{
"timestamp": "2020-09-04T06:02:46.567+00:00",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/stats/2020-05-30/"
}
那么注释没有正确注册?
更新:
PathVariable似乎不需要验证:
验证器(@Validated@Valid(不适用于Spring和TomEE
在REST中,路径变量是资源URL的一部分。因此,如果缺少路径/URL的一部分,则资源是不同的。
这就是为什么404是正确的响应代码。
如果这两个变量可以为空,那么它们应该是@RequestParam。
实际上Spring通过发送404向客户端返回正确答案。当有人没有提供完整的URL时,404是要响应的状态。
验证这一点的正确方法是使用一些日期类,如date或LocalDatetring。您可能需要定义正确的日期格式,因此请查看以下链接以了解详细信息。https://www.baeldung.com/spring-date-parameters
将以下注释添加到为我工作的类中。(不是添加到方法中(
@Validated