gpt4 book ai didi

spring-boot - 如果 Mono 为空,则创建未找到的 ServerResponse

转载 作者:行者123 更新时间:2023-12-02 13:17:50 27 4
gpt4 key购买 nike

我正在使用 Spring Boot 2.2.6、Kotlin 和协程来实现一个简单的响应式(Reactive)休息 API。我正在尝试使用 functional style .

如果存储库返回空 Mono<Task>,如何更改以下代码以返回 404 HTTP 响应(Task 是一个简单的矿域模型类)?

suspend fun findOne(request: ServerRequest): ServerResponse {
val id = request.pathVariable("id")
val task = repository.findById(id)
return ServerResponse
.ok()
.json()
.bodyAndAwait(task.asFlow())
}

请注意我正在使用协程。我需要一个 Flow 的实例.像 this 这样的例子请勿应用。

非常感谢。

最佳答案

我认为真正的问题是如何将 Mono 转换为暂停的结果。

请看here .

实际上,您正在查看的示例中正在使用这种方法。
查看here

更新(添加代码)

suspend fun findOne(req: ServerRequest): ServerResponse {
val id = req.pathVariable("id").toInt()
return taskRepo.findById(id)
.flatMap { task->ServerResponse.ok().json().body<Task>(task) }
.switchIfEmpty { ServerResponse.notFound().build() }
.awaitSingle()

}

更新 2
创建了一个小型演示项目 here .

关于spring-boot - 如果 Mono 为空,则创建未找到的 ServerResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61697479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com