我怀疑我在这里遗漏了一些非常明显的东西,但是我不知道如何在reactor-netty中使用HttpServer实现一个非常简单的用例。
本质上,我希望实现在响应对象不为空时使用200 OK进行响应,以及在响应对象为空时使用404 Not Found进行响应的功能。
我正在使用Kotlin,并向HttpServerResponse添加了一个扩展函数来将对象映射到JSON:
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?>的内容来切换行为。
任何帮助都将不胜感激!
发布于 2019-12-02 19:25:05
我设法用下面的代码解决了类似的问题
Mono<String> valueMono = Mono.from(...).doOnSuccess(s -> {
if (s == null) {
response.status(HttpResponseStatus.NOT_FOUND);
}
});
return response.sendString(valueMono);https://stackoverflow.com/questions/57225298
复制相似问题