在 Jersey 2 中可以这样做:
@GET
@PATH("user/{email}")
public IDto getUser(@NotNull @Email @PathParam("email") String validEmail) {
return userManagementService.findUserByEmail(validEmail);
}
但我无法在 Spring MVC 中进行类似的工作,似乎只有在 @RequestBody 中提供对象或使用 SpringMVC Form 时才会进行验证,例如以下内容将不起作用:
@RequestMapping(value="/user/{email}", method = RequestMethod.GET)
public @ResponseBody IDto getUser(@NotNull @Email @PathVariable String validEmail) {
return userManagementService.findUserByEmail(validEmail);
}
还有其他类似的问题,但这些问题似乎面向 Spring MVC UI 应用程序,在我的例子中,它只是一个返回 JSON 响应的 REST API,所以我没有任何视图来映射/绑定到控制器。
似乎有可能,使用@Validated
.
这是一个example https://sdqali.in/blog/2015/12/04/validating-requestparams-and-pathvariables-in-spring-mvc/.
根据OP的问题,这应该有效:
@RestController
@Validated
public class MyController {
@GetMapping(value="/user/{email}")
public @ResponseBody IDto getUser(@NotNull @Email @PathVariable String validEmail) {
return userManagementService.findUserByEmail(validEmail);
}
}
在普通的 Spring 实现中,可能需要手动注册验证器 bean:
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)