Webflux эквивалент HttpServletResponse.sendError - PullRequest
0 голосов
/ 01 июля 2019

В настоящее время я переключаюсь с сервлета на Spring Webflux и работаю с Spring Cloud Gateway и пытаюсь написать GlobalFilter.

У меня есть часть моего старого кода, которая выполняет некоторые утверждения о запросево время цепочки фильтров и отвечает с ошибкой:

  override fun doFilterInternal(request: HttpServletRequest, response: HttpServletResponse, filterChain: FilterChain) {
    // various assertions on request
    if (assertionsFailed) {
      response.sendError(...)
      ...
    }

Моя текущая структура кода выглядит примерно так:

  @Bean
  fun preFilter(): GlobalFilter {
    return GlobalFilter { exchange, chain ->
      Mono.create<Void> { sink ->
        // perform some processing on exchange.request
        ...
        // trying to accomplish something similar to this
        exchange.sendError(statusCode, MyErrorModel(reason))

        sink.success()
      }.then()
    }
  }

Как правильно вернуть ошибку во время этой фазы вПохожим образом?

...