Мне не совсем понятны эти реактивные типы при работе с 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>
типов «обертки»?
- Есть ли способ проверить какие-либо различия при использовании нереактивного и реактивного подхода?