Я подозреваю, что мне здесь не хватает чего-то действительно очевидного, но я не могу понять, как достичь очень простого варианта использования HttpServer в response-netty.
По сути, я хочу реализовать возможность отвечать 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)
}
}
Этот код в настоящее время не работает, если исходный объект равен нулю (из-за использования it!!
). На самом деле я хочу переключить код состояния ответа и не отправлять строковое содержимое, если исходный объект имеет значение NULL. Но я просто не могу понять, как переключить поведение в зависимости от содержимого Mono<T?>
.
Любая помощь приветствуется!
val jsonString = obj.map { it?.toString() }
, затем использовать.status(if (jsonString == null) OK else OTHER_STATUS_CODE)
для кода состояния и.sendString(jsonString ?: "")
для тела ответа? - person Michael Berry   schedule 26.07.2019