Я не совсем понимаю эти реактивные типы при работе с RESTful API.
Насколько я понимаю, нереактивные запросы / ответы состоят из простых типов POJO или типа String. С другой стороны, реактивные запросы / ответы - например, при использовании RxJava 2.x- состоят из Simple<T> или Flowable<T>.
Но как тогда подойти к реактивной модели / способу при использовании HttpRequest<T> / HttpResponse<T> типов "обертки"? Я всегда хотел выражать запросы / ответы с их помощью, а не с какими-либо другими типами, потому что во многих случаях может потребоваться выражать разные типы HTTP-ответов (среди прочего), для пример:
@Get(value = "/{id}", produces = [MediaType.APPLICATION_JSON])
fun getById(id: String): HttpResponse<Issue> {
//logger.info { "${request.method} ${request.path}" }
return service.findById(UUID.fromString(id))
.map { HttpResponse.ok(it) }
.orElseGet { HttpResponse.notFound() }
}
Итак, мои вопросы:
- Каким будет правильный способ реализации реактивного RESTful API в Micronaut с использованием
HttpRequest<T>/HttpResponse<T>типов «оболочки»? - Есть ли способ проверить какие-либо различия при использовании нереактивного и реактивного подходов?