Реактивный подход / типы в Micronaut для RESTful API

Я не совсем понимаю эти реактивные типы при работе с 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() }
}

Итак, мои вопросы:

  1. Каким будет правильный способ реализации реактивного RESTful API в Micronaut с использованием HttpRequest<T> / HttpResponse<T> типов «оболочки»?
  2. Есть ли способ проверить какие-либо различия при использовании нереактивного и реактивного подходов?

person x80486    schedule 02.01.2019    source источник
comment
Вы задали 2 принципиально разных вопроса. Вам, вероятно, следует разбить их на отдельные сообщения SO.   -  person Jeff Scott Brown    schedule 02.01.2019


Ответы (1)


Вы можете вернуть что-то вроде Flowable<HttpResponse<T>>.

person Jeff Scott Brown    schedule 02.01.2019