В настоящее время я переключаюсь с сервлета на 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()
}
}
Как правильно вернуть ошибку во время этой фазы вПохожим образом?