首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Project Reactor Netty HTTP Server中有条件地设置状态码?

如何在Project Reactor Netty HTTP Server中有条件地设置状态码?
EN

Stack Overflow用户
提问于 2019-07-27 02:24:02
回答 1查看 144关注 0票数 1

我怀疑我在这里遗漏了一些非常明显的东西,但是我不知道如何在reactor-netty中使用HttpServer实现一个非常简单的用例。

本质上,我希望实现在响应对象不为空时使用200 OK进行响应,以及在响应对象为空时使用404 Not Found进行响应的功能。

我正在使用Kotlin,并向HttpServerResponse添加了一个扩展函数来将对象映射到JSON:

代码语言:javascript
复制
fun <T> HttpServerResponse.sendObjectAsJson(obj: Mono<T?>, mapper: (T) -> JsonObject): NettyOutbound {
    val jsonString = obj.map { mapper(it!!) }.map { it.toString() }
    return this
       .status(OK)
       .header(CONTENT_TYPE, "application/json")
       .sendString(jsonString)
    }
}

如果源对象为null (由于使用了it!!),则此代码当前会中断。我真正想实现的是切换响应状态码,如果源对象为空,则不发送任何字符串内容。但是,我就是想不出如何根据Mono<T?>的内容来切换行为。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2019-12-02 19:25:05

我设法用下面的代码解决了类似的问题

代码语言:javascript
复制
Mono<String> valueMono = Mono.from(...).doOnSuccess(s -> {
  if (s == null) {
    response.status(HttpResponseStatus.NOT_FOUND);
  }
});
return response.sendString(valueMono);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57225298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档