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());
|
||||
addAttributes(exchange, request);
|
||||
return this.routerFunction.route(request)
|
||||
.switchIfEmpty(Mono.error(new ResponseStatusException(HttpStatus.NOT_FOUND)))
|
||||
.switchIfEmpty(createNotFoundError())
|
||||
.flatMap(handlerFunction -> wrapException(() -> handlerFunction.handle(request)))
|
||||
.flatMap(response -> wrapException(() -> response.writeTo(exchange,
|
||||
new HandlerStrategiesResponseContext(this.strategies))));
|
||||
|
|
@ -1260,6 +1260,11 @@ public abstract class RouterFunctions {
|
|||
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) {
|
||||
try {
|
||||
return supplier.get();
|
||||
|
|
|
|||
Loading…
Reference in New Issue