WebFlux supports HTTP HEAD

Issue: SPR-15994
This commit is contained in:
Rossen Stoyanchev
2017-09-27 14:57:56 -04:00
parent d8d74faab8
commit 6ee1af27c6
10 changed files with 153 additions and 35 deletions

View File

@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.reactivestreams.Publisher;
import org.springframework.core.io.buffer.NettyDataBufferFactory;
import org.springframework.http.HttpMethod;
import org.springframework.util.Assert;
import io.netty.buffer.ByteBuf;
@@ -64,8 +65,8 @@ public class RxNettyHttpHandlerAdapter implements RequestHandler<ByteBuf, ByteBu
NettyDataBufferFactory bufferFactory = new NettyDataBufferFactory(channel.alloc());
InetSocketAddress remoteAddress = (InetSocketAddress) channel.remoteAddress();
RxNettyServerHttpRequest request;
RxNettyServerHttpResponse response;
ServerHttpRequest request;
ServerHttpResponse response;
try {
request = new RxNettyServerHttpRequest(nativeRequest, bufferFactory, remoteAddress);
response = new RxNettyServerHttpResponse(nativeResponse, bufferFactory);
@@ -76,6 +77,10 @@ public class RxNettyHttpHandlerAdapter implements RequestHandler<ByteBuf, ByteBu
return Observable.empty();
}
if (HttpMethod.HEAD.equals(request.getMethod())) {
response = new HttpHeadResponseDecorator(response);
}
Publisher<Void> result = this.httpHandler.handle(request, response)
.onErrorResume(ex -> {
logger.error("Could not complete request", ex);