Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Webflux, How to forward to index.html to serve static content

Tags:

spring-boot-starter-webflux (Spring Boot v2.0.0.M2) is already configured like in a spring-boot-starter-web to serve static content in the static folder in resources. But it doesn't forward to index.html. In Spring MVC it is possible to configure like this:

@Override public void addViewControllers(ViewControllerRegistry registry) {     registry.addViewController("/").setViewName("forward:/index.html"); } 

How to do it in Spring Webflux?

like image 779
Igor Rybak Avatar asked Jul 17 '17 14:07

Igor Rybak


2 Answers

Do it in WebFilter:

@Component public class CustomWebFilter implements WebFilter {   @Override   public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {     if (exchange.getRequest().getURI().getPath().equals("/")) {         return chain.filter(exchange.mutate().request(exchange.getRequest().mutate().path("/index.html").build()).build());     }      return chain.filter(exchange);   } } 
like image 152
Alphaone Avatar answered Sep 19 '22 11:09

Alphaone


import static org.springframework.web.reactive.function.server.RequestPredicates.GET; import static org.springframework.web.reactive.function.server.RouterFunctions.route; import static org.springframework.web.reactive.function.server.ServerResponse.ok;  @Bean public RouterFunction<ServerResponse> indexRouter(@Value("classpath:/static/index.html") final Resource indexHtml) { return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).bodyValue(indexHtml)); } 
like image 35
user2071703 Avatar answered Sep 17 '22 11:09

user2071703