Spring 5 Webflux rest controller - 如何执行输入验证?
Spring 5 Webflux rest controller - How to perform input validation?
我正在构建一个具有一些 Rest 控制器的网络应用程序:
@RestController
@RequestMapping(value = Path.ROOT)
public class TestController {
@Autowired
private AService service;
@RequestMapping(method = RequestMethod.POST)
public Flux<ItemResponse> doSomething(@RequestBody @Valid final ItemRequest request) {
return service.pleaseDoSomething(request);
}
}
我的输入对象是这样的:
public Class ItemRequest{
@NotNull
private String anInputValue
}
我的应用有注解@EnableWebFlux
问题是根本没有验证发生,当我删除以前的注释时,一切正常。
我正在使用 Spring boot 2.0.3 / tomcat dep
这是怎么回事?
如 the Spring Boot reference documentation 所述,添加 @EnableWebFlux
意味着您想完全控制 WebFlux 配置。在这种情况下,这包括网络验证。
现在有几种方法可以在您的应用程序中自定义资源处理 - 您可以使用各种 spring.resources.*
配置键,或者添加您自己的配置 class 来实现 WebFluxConfigurer
并覆盖addResourceHandlers
方法。
谢谢@M。 Deinum 和@Brian Clozel
这是自定义配置 class 我需要同时使用 thymeleaf 和验证
@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {
@Resource
private ThymeleafReactiveViewResolver thymeleafReactiveViewResolver;
@Autowired
private Validator defaultValidator;
@Override
public Validator getValidator() {
return defaultValidator;
}
@Override
public void configureViewResolvers(final ViewResolverRegistry registry) {
registry.viewResolver(thymeleafReactiveViewResolver);
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.resourceChain(false);
}
}
我正在构建一个具有一些 Rest 控制器的网络应用程序:
@RestController
@RequestMapping(value = Path.ROOT)
public class TestController {
@Autowired
private AService service;
@RequestMapping(method = RequestMethod.POST)
public Flux<ItemResponse> doSomething(@RequestBody @Valid final ItemRequest request) {
return service.pleaseDoSomething(request);
}
}
我的输入对象是这样的:
public Class ItemRequest{
@NotNull
private String anInputValue
}
我的应用有注解@EnableWebFlux
问题是根本没有验证发生,当我删除以前的注释时,一切正常。
我正在使用 Spring boot 2.0.3 / tomcat dep
这是怎么回事?
如 the Spring Boot reference documentation 所述,添加 @EnableWebFlux
意味着您想完全控制 WebFlux 配置。在这种情况下,这包括网络验证。
现在有几种方法可以在您的应用程序中自定义资源处理 - 您可以使用各种 spring.resources.*
配置键,或者添加您自己的配置 class 来实现 WebFluxConfigurer
并覆盖addResourceHandlers
方法。
谢谢@M。 Deinum 和@Brian Clozel 这是自定义配置 class 我需要同时使用 thymeleaf 和验证
@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {
@Resource
private ThymeleafReactiveViewResolver thymeleafReactiveViewResolver;
@Autowired
private Validator defaultValidator;
@Override
public Validator getValidator() {
return defaultValidator;
}
@Override
public void configureViewResolvers(final ViewResolverRegistry registry) {
registry.viewResolver(thymeleafReactiveViewResolver);
}
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.resourceChain(false);
}
}