Gateway获取下游最终响应码

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

@Component
public class DownstreamStatusLogFilter implements GlobalFilter, Ordered {

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    return chain.filter(exchange)
            .doAfterTerminate(() -> {
                // 获取最终的响应状态码
                HttpStatus status = exchange.getResponse().getStatusCode();
                if (status != null) {
                    System.out.println("下游状态码: " + status.value());
                }
            });
}

@Override
public int getOrder() {
    return Ordered.LOWEST_PRECEDENCE; // 确保最后执行
}

}

### 解决 Spring Cloud Gateway 转发请求失败 404 错误 当遇到 Spring Cloud Gateway 请求转发失败并返回 404 错误时,通常是因为路由配置不当或目标服务不可达。以下是详细的排查和解决方案: #### 1. 检查路由配置 确保 `application.yml` 中的路由配置正确无误。特别是 `uri` 和 `predicates` 部分需要精确匹配实际的服务地址和服务路径。 ```yaml server: port: 8081 spring: cloud: gateway: routes: - id: example_service_route uri: lb://example-service # 使用逻辑名称而非硬编码URL predicates: - Path=/api/** filters: - StripPrefix=1 ``` 上述配置中,`lb://example-service` 表示使用负载均衡的方式访问名为 `example-service` 的微服务[^4]。 #### 2. 添加负载均衡依赖 如果希望将请求路由到同一服务的不同实例(不同端口),需引入负载均衡功能。为此,在网关项目的 `pom.xml` 文件中加入如下依赖项: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> ``` 这一步骤能够使 Spring Cloud Gateway 支持基于 Ribbon 或其他负载均衡策略来分配流量至各个可用节点[^3]。 #### 3. 确认下游服务状态 验证被调用的服务是否已启动并且监听正确的端口号。可以通过命令行工具如 curl 测试直连该服务接口是否正常工作;也可以借助监控平台查看其健康状况指标。 #### 4. 日志分析 开启更详尽的日志级别以便于捕捉潜在异常信息。对于 Spring Boot 应用而言,默认情况下只需调整日志框架配置文件中的相应部分即可提高输出等级为 DEBUG 或 TRACE。 例如修改 logback-spring.xml: ```xml <logger name="org.springframework.cloud.gateway" level="DEBUG"/> ``` 这样可以获取更多关于 HTTP 请求处理过程的数据流记录,有助于定位具体原因所在。 通过以上措施应该能有效解决大部分由于配置错误引起的 404 响应码问题。当然还有许多其它因素也可能影响最终效果,比如网络防火墙设置、DNS解析效率等外部环境变量的影响也不可忽视。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值