Use HttpRequest.getMethodValue
This commit uses the newly introduced HttpRequest.getMethodValue in the webflux module. Issue: SPR-15545
This commit is contained in:
parent
630fc194f0
commit
a5b94f3a77
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -120,7 +120,7 @@ public class DispatcherHandler implements WebHandler, ApplicationContextAware {
|
|||
public Mono<Void> handle(ServerWebExchange exchange) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
ServerHttpRequest request = exchange.getRequest();
|
||||
logger.debug("Processing " + request.getMethod() + " request for [" + request.getURI() + "]");
|
||||
logger.debug("Processing " + request.getMethodValue() + " request for [" + request.getURI() + "]");
|
||||
}
|
||||
return Flux.fromIterable(this.handlerMappings)
|
||||
.concatMap(mapping -> mapping.getHandler(exchange))
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ public class ResourceWebHandler
|
|||
}))
|
||||
.flatMap(resource -> {
|
||||
try {
|
||||
if (HttpMethod.OPTIONS.equals(exchange.getRequest().getMethod())) {
|
||||
if (HttpMethod.OPTIONS.matches(exchange.getRequest().getMethodValue())) {
|
||||
exchange.getResponse().getHeaders().add("Allow", "GET,HEAD,OPTIONS");
|
||||
return Mono.empty();
|
||||
}
|
||||
|
|
@ -323,7 +323,7 @@ public class ResourceWebHandler
|
|||
}
|
||||
|
||||
// Content phase
|
||||
if (HttpMethod.HEAD.equals(exchange.getRequest().getMethod())) {
|
||||
if (HttpMethod.HEAD.matches(exchange.getRequest().getMethodValue())) {
|
||||
setHeaders(exchange, resource, mediaType);
|
||||
exchange.getResponse().getHeaders().set(HttpHeaders.ACCEPT_RANGES, "bytes");
|
||||
logger.trace("HEAD request - skipping content");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -107,7 +107,7 @@ public final class RequestMethodsRequestCondition extends AbstractRequestConditi
|
|||
return matchPreFlight(exchange.getRequest());
|
||||
}
|
||||
if (getMethods().isEmpty()) {
|
||||
if (RequestMethod.OPTIONS.name().equals(exchange.getRequest().getMethod().name())) {
|
||||
if (RequestMethod.OPTIONS.name().equals(exchange.getRequest().getMethodValue())) {
|
||||
return null; // No implicit match for OPTIONS (we handle it)
|
||||
}
|
||||
return this;
|
||||
|
|
|
|||
|
|
@ -218,9 +218,9 @@ public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMe
|
|||
ServerHttpRequest request = exchange.getRequest();
|
||||
|
||||
if (helper.hasMethodsMismatch()) {
|
||||
HttpMethod httpMethod = request.getMethod();
|
||||
String httpMethod = request.getMethodValue();
|
||||
Set<HttpMethod> methods = helper.getAllowedMethods();
|
||||
if (HttpMethod.OPTIONS.matches(httpMethod.name())) {
|
||||
if (HttpMethod.OPTIONS.matches(httpMethod)) {
|
||||
HttpOptionsHandler handler = new HttpOptionsHandler(methods);
|
||||
return new HandlerMethod(handler, HTTP_OPTIONS_HANDLE_METHOD);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.web.reactive.function.server;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Arjen Poutsma
|
||||
*/
|
||||
public class InvalidHttpMethodIntegrationTests extends AbstractRouterFunctionIntegrationTests {
|
||||
|
||||
@Override
|
||||
protected RouterFunction<?> routerFunction() {
|
||||
return RouterFunctions.route(RequestPredicates.GET("/"),
|
||||
request -> ServerResponse.ok().syncBody("FOO"))
|
||||
.andRoute(RequestPredicates.all(),
|
||||
request -> ServerResponse.ok().syncBody("BAR"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void invalidHttpMethod() throws Exception {
|
||||
OkHttpClient client = new OkHttpClient();
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.method("BAZ", null)
|
||||
.url("http://localhost:" + port + "/")
|
||||
.build();
|
||||
|
||||
try (Response response = client.newCall(request).execute()) {
|
||||
assertEquals("BAR", response.body().string());
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue