当前位置: 首页 > 知识库问答 >
问题:

Spring WebFlux静态编程语言响应处理

公羊宇定
2023-03-14

当结合使用SpringWebFlux和Kotlin协同程序时,我很难理解一个简单的RESTfulWS响应处理场景。假设我们在REST控制器中有一个简单的WS方法,该方法可能返回大量(数百万)响应“things”:

@GetMapping
suspend fun findAllThings(): Flow<Thing> {
    //Reactive DB query, return a flow of things
}

这正如人们所期望的那样:只要使用流媒体类型(例如“application/x-ndjson”),结果就会流式传输到客户端。在更复杂的服务调用中,也考虑了错误/警告的可能性,我希望返回以下形式的响应对象:

class Response<T> {
    val errors: Flow<String>
    val things: Flow<T>
}

这里的想法是响应要么成功(返回空错误流和事物流),要么失败(包含在相应的流中的错误,而事物流为空)。在阻塞编程中,这是一个非常常见的响应习惯用法。我现在的问题是如何使这个习惯用法适应静态编程语言/Spring WebFlux中的反应性方法?

我知道有可能只返回所描述的响应(或单声道)

共有1个答案

宋凌龙
2023-03-14

每个事件返回成功/错误如何?

kotlin prettyprint-override">class Result<T> private constructor(val result: T?, val error: String?) {

    constructor(data: T) : this(data, null)
    constructor(error: String) : this(null, error)
    val isError = error != null

}

@GetMapping
suspend fun findAllThings(): Flow<Result<Thing>> {
    //Reactive DB query, return a flow of things
}

 类似资料:
  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 我有以下问题:-创建了几个模块来实现类,并用-我的Android应用程序正在使用检索这些类。但是由于某种原因,没有在

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。

  • 暴露0.27.1是否能够翻译以下SQL语句? 下面是我尝试的内容,但不幸的是,子查询独立于查询的其余部分工作。 此外,如果可能的话,那么如何使用别名从ResultRow获取结果?在这个示例之后,解决方案似乎是将整个子查询存储在单个变量中,并使用一个alias()方法调用,但这看起来很难看。有没有更好的方法?

  • 根据 的来源,如果发生错误,将引发异常。 在的大多数示例中,没有使用try-catch,如下所示。为什么不需要错误处理?它安全吗?

  • 上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我