Spring Cloud Gateway возвращает ошибку HTML вместо ошибки ретрансляции службыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring Cloud Gateway возвращает ошибку HTML вместо ошибки ретрансляции службы

Сообщение Anonymous »

Я использую Spring Cloud Gateway (MVC) в качестве BFF между моим интерфейсом (SPA) и сервером.
Все работает как положено, но если серверы возвращают ошибку (например, 409),
шлюз возвращает 500 с HTML в качестве ответа.
Копав глубже, я обнаружил следующую ошибку:
2024-10-23T16:30:47.804+02:00 ERROR 31792 --- [edepot-api-gateway] [nio-7081-exec-6] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing [ErrorPage[errorCode=0, location=/error]]

jakarta.servlet.ServletException: Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:4200/error": http://localhost:4200/error


что вызвано:
java.io.FileNotFoundException: http://localhost:4200/error

Но ошибка от бэкэнда получена правильно (логи перед приведенным выше):
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:8080/api/x": Server returned HTTP response code: 409 for URL: http://localhost:8080/api/x

Интересно, связано ли это как-то с обработкой ошибок Tomcat или неправильной настройкой шлюза?
Странно, что он возвращает HTML, а не JSON.
Изображение

Вот конфигурация моего шлюза:
spring.cloud.gateway.mvc.routes[0].id=api
spring.cloud.gateway.mvc.routes[0].uri=${backend-uri}
spring.cloud.gateway.mvc.routes[0].predicates[0]=Path=/api/**
spring.cloud.gateway.mvc.routes[0].filters[0].name=DedupeResponseHeader
spring.cloud.gateway.mvc.routes[0].filters[0].args[name]=Access-Control-Allow-Credentials Access-Control-Allow-Origin
spring.cloud.gateway.mvc.routes[0].filters[1].name=TokenRelay

//spring.cloud.gateway.mvc.routes[1] irrelevant

#Frontend routes
spring.cloud.gateway.mvc.routes[2].id=frontend
spring.cloud.gateway.mvc.routes[2].uri=${frontend-uri}
spring.cloud.gateway.mvc.routes[2].predicates=Path=/**
# Forwarding support
spring.cloud.gateway.mvc.http-client.type=autodetect
spring.cloud.gateway.mvc.http-client.connect-timeout=60s
spring.cloud.gateway.mvc.http-client.read-timeout=60s
#spring.cloud.mvc.discovery.enabled=true



Подробнее здесь: https://stackoverflow.com/questions/791 ... vice-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»