在这种情况下,您应该使用 @RequestParam 而不是 @PathParams。
但验证也可以应用于@PathParam
@GetMapping(path = "extra")
public String doExtraThing(@RequestParam("data") String data) {
return "Data is: " + data;
}
使用@NotNull
如果你直接从浏览器点击这个 api
http://localhost:8080/demo/extra
你应该在控制台中得到一些东西,因为你的默认请求参数是强制性的。
2021-03-06 08:55:20.872 WARN 2936 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'data' is not present]
使其成为可选使用
@RequestParam(value = "data", required = false) String data
现在当你尝试点击 http://localhost:8080/demo/extra?data= 时,你应该得到
Data is:
现在,当您将其设为 required = false 并从 javax.validation.constraints 包中添加 @NotNull 注释并再次点击 api 时,您应该会收到 503 内部服务器错误。
javax.validation.ConstraintViolationException: doExtraThing.data: must not be null
使用@NotBlank:
您可以使用来自javax.validation.constraints 的@NotBlank 实现相同的行为
@NotNull 验证对象不为空。
@NotBlank 检查字符序列(例如字符串)的修剪长度是否为空。
你会在字符串上使用@NotBlank 更多here