Provide access to HTTP headers in resource routing
This commit adds additional overloaded methods that allow for HTTP header manipulation of served resources. Closes gh-29985
This commit is contained in:
committed by
Arjen Poutsma
parent
faaf3a61f2
commit
ad50de169c
@@ -17,6 +17,7 @@
|
||||
package org.springframework.web.reactive.function.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -28,6 +29,8 @@ import reactor.test.StepVerifier;
|
||||
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.CacheControl;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.MediaType;
|
||||
@@ -130,6 +133,28 @@ public class RouterFunctionBuilderTests {
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resourcesCaching() {
|
||||
Resource resource = new ClassPathResource("/org/springframework/web/reactive/function/server/");
|
||||
assertThat(resource.exists()).isTrue();
|
||||
|
||||
RouterFunction<ServerResponse> route = RouterFunctions.route()
|
||||
.resources("/resources/**", resource, resource1 -> CacheControl.maxAge(Duration.ofSeconds(60)))
|
||||
.build();
|
||||
|
||||
MockServerHttpRequest mockRequest = MockServerHttpRequest.get("https://localhost/resources/response.txt").build();
|
||||
ServerRequest resourceRequest = new DefaultServerRequest(MockServerWebExchange.from(mockRequest), Collections.emptyList());
|
||||
|
||||
Mono<String> responseMono = route.route(resourceRequest)
|
||||
.flatMap(handlerFunction -> handlerFunction.handle(resourceRequest))
|
||||
.map(ServerResponse::headers)
|
||||
.mapNotNull(HttpHeaders::getCacheControl);
|
||||
|
||||
StepVerifier.create(responseMono)
|
||||
.expectNext("max-age=60")
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void nest() {
|
||||
RouterFunction<?> route = RouterFunctions.route()
|
||||
|
||||
Reference in New Issue
Block a user