Polish "Throw 404 ResponseStatusException when no routes found"
See gh-25358
This commit is contained in:
parent
69df27a99f
commit
b84fe99d07
|
|
@ -1248,7 +1248,7 @@ public abstract class RouterFunctions {
|
||||||
ServerRequest request = new DefaultServerRequest(exchange, this.strategies.messageReaders());
|
ServerRequest request = new DefaultServerRequest(exchange, this.strategies.messageReaders());
|
||||||
addAttributes(exchange, request);
|
addAttributes(exchange, request);
|
||||||
return this.routerFunction.route(request)
|
return this.routerFunction.route(request)
|
||||||
.switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND)))
|
.switchIfEmpty(createNotFoundError())
|
||||||
.flatMap(handlerFunction -> wrapException(() -> handlerFunction.handle(request)))
|
.flatMap(handlerFunction -> wrapException(() -> handlerFunction.handle(request)))
|
||||||
.flatMap(response -> wrapException(() -> response.writeTo(exchange,
|
.flatMap(response -> wrapException(() -> response.writeTo(exchange,
|
||||||
new HandlerStrategiesResponseContext(this.strategies))));
|
new HandlerStrategiesResponseContext(this.strategies))));
|
||||||
|
|
@ -1260,6 +1260,11 @@ public abstract class RouterFunctions {
|
||||||
attributes.put(REQUEST_ATTRIBUTE, request);
|
attributes.put(REQUEST_ATTRIBUTE, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private <R> Mono<R> createNotFoundError() {
|
||||||
|
return Mono.defer(() -> Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND,
|
||||||
|
"No matching router function")));
|
||||||
|
}
|
||||||
|
|
||||||
private static <T> Mono<T> wrapException(Supplier<Mono<T>> supplier) {
|
private static <T> Mono<T> wrapException(Supplier<Mono<T>> supplier) {
|
||||||
try {
|
try {
|
||||||
return supplier.get();
|
return supplier.get();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue