ServerWebExchange exchange怎么返回404
时间: 2024-10-23 19:11:51 浏览: 16
在Spring WebFlux框架中,如果你想要在`ServerWebExchange`上返回404 Not Found响应,你可以这样做:
```java
// 创建一个404状态码的响应
Mono<ServerResponse> notFoundResponse = ServerResponse.status(HttpStatus.NOT_FOUND)
.contentType(MediaType.APPLICATION_JSON)
// 可选地,你可以提供一个自定义的错误消息作为响应体
.body(BodyInserters.fromValue(new ErrorResponse("Resource not found")));
// 然后,使用flatMapOperator将你的业务逻辑(如果有的话)与响应创建结合在一起
// 假设你想检查资源是否存在,不存在就返回404
Optional<YourResource> resource = fetchResourceFromDatabase(exchange.getRequestURI());
resource.ifPresent(resource -> /* 处理正常情况 */)
.orElse(notFoundResponse); // 资源不存在时直接返回404
// 或者,如果你只关心是否找到资源,可以简化为:
resource.map(this::handleResource).orElse(notFoundResponse);
```
这里的关键点在于`status()`方法设置了响应状态码,并且`body()`方法用于插入响应体(在这个例子中通常是一个包含错误信息的对象)。
阅读全文