WebFlux supports HTTP HEAD
Issue: SPR-15994
This commit is contained in:
@@ -36,7 +36,9 @@ import org.springframework.http.client.reactive.ClientHttpConnector;
|
||||
import org.springframework.http.client.reactive.ClientHttpRequest;
|
||||
import org.springframework.http.client.reactive.ClientHttpResponse;
|
||||
import org.springframework.http.server.reactive.HttpHandler;
|
||||
import org.springframework.http.server.reactive.HttpHeadResponseDecorator;
|
||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||
import org.springframework.http.server.reactive.ServerHttpResponse;
|
||||
import org.springframework.mock.http.client.reactive.MockClientHttpRequest;
|
||||
import org.springframework.mock.http.client.reactive.MockClientHttpResponse;
|
||||
import org.springframework.mock.http.server.reactive.MockServerHttpRequest;
|
||||
@@ -84,7 +86,8 @@ public class HttpHandlerConnector implements ClientHttpConnector {
|
||||
mockClientRequest.setWriteHandler(requestBody -> {
|
||||
log("Invoking HttpHandler for ", httpMethod, uri);
|
||||
ServerHttpRequest mockServerRequest = adaptRequest(mockClientRequest, requestBody);
|
||||
this.handler.handle(mockServerRequest, mockServerResponse).subscribe(aVoid -> {}, result::onError);
|
||||
ServerHttpResponse responseToUse = prepareResponse(mockServerResponse, mockServerRequest);
|
||||
this.handler.handle(mockServerRequest, responseToUse).subscribe(aVoid -> {}, result::onError);
|
||||
return Mono.empty();
|
||||
});
|
||||
|
||||
@@ -114,6 +117,11 @@ public class HttpHandlerConnector implements ClientHttpConnector {
|
||||
return MockServerHttpRequest.method(method, uri).headers(headers).cookies(cookies).body(body);
|
||||
}
|
||||
|
||||
private ServerHttpResponse prepareResponse(ServerHttpResponse response, ServerHttpRequest request) {
|
||||
return HttpMethod.HEAD.equals(request.getMethod()) ?
|
||||
new HttpHeadResponseDecorator(response) : response;
|
||||
}
|
||||
|
||||
private ClientHttpResponse adaptResponse(MockServerHttpResponse response, Flux<DataBuffer> body) {
|
||||
HttpStatus status = Optional.ofNullable(response.getStatusCode()).orElse(HttpStatus.OK);
|
||||
MockClientHttpResponse clientResponse = new MockClientHttpResponse(status);
|
||||
|
||||
Reference in New Issue
Block a user