Реактивный подход / типы в Micronaut для API RESTful - PullRequest
0 голосов
/ 02 января 2019

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

1 Ответ

0 голосов
/ 02 января 2019

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

...