我是新来的 Spring 开机,我有这个问题。即使我不提供“数据”,我仍然可以得到200你认为这是为什么?感谢您的帮助。最好的
2mbi3lxu1#
你应该使用 @RequestParam 相对于 @PathParams 在这种情况下。但验证也可以应用于 @PathParam ```@GetMapping(path = "extra")public String doExtraThing(@RequestParam("data") String data) {return "Data is: " + data;}
@RequestParam
@PathParams
@PathParam
使用@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` 并添加 `@NotNull` 注解自 `javax.validation.constraints` 包并再次点击api,您应该会得到503内部服务器错误。
javax.validation.ConstraintViolationException: doExtraThing.data: must not be null
使用@notblank: 您可以使用@notblank from实现相同的行为 `javax.validation.constraints` @notnull验证对象是否为null。 @notblank检查字符序列(例如字符串)的修剪长度不为空。 你可以在这里更多的字符串上使用@notblank
c0vxltue2#
当你使用 @NotNull 你在阻止 String data 具有空值。但是在postman中,当你用空值发送数据时,实际上是用空字符串发送的 "" . 防止两者兼而有之 null 值和空字符串使用 @NotBlank .
@NotNull
String data
""
null
@NotBlank
@RestController @Validated public class HelloController { @GetMapping(value = "/path") public String getData(@Valid @PathParam("data") @NotBlank String data) { return data; } }
如果你想发送 data 作为 null 检查是否 @NotNull 工作,只是取消选中它从 Postman 参数(不发送它)。它应该在应用程序中引发一个异常 data 不能为空。
data
2条答案
按热度按时间2mbi3lxu1#
你应该使用
@RequestParam
相对于@PathParams
在这种情况下。但验证也可以应用于@PathParam
```@GetMapping(path = "extra")
public String doExtraThing(@RequestParam("data") String data) {
return "Data is: " + data;
}
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
Data is:
javax.validation.ConstraintViolationException: doExtraThing.data: must not be null
c0vxltue2#
当你使用
@NotNull
你在阻止String data
具有空值。但是在postman中,当你用空值发送数据时,实际上是用空字符串发送的""
. 防止两者兼而有之null
值和空字符串使用@NotBlank
.如果你想发送
data
作为null
检查是否@NotNull
工作,只是取消选中它从 Postman 参数(不发送它)。它应该在应用程序中引发一个异常data
不能为空。