java gateway获得url

package com.erp.wxapp.gsteway.filter;

import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

import java.net.URI;


@Component
public class AuthFilter implements GlobalFilter, Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        System.out.println("12356256265262打印了");
        //1.获取请求对象
        ServerHttpRequest request = exchange.getRequest();
        //2.获取响应对象
        ServerHttpResponse response = exchange.getResponse();
        URI url = request.getURI();
        String urls = url.getHost();//获得url
//        response.setStatusCode(HttpStatus.UNAUTHORIZED);
//        return response.setComplete();
        return chain.filter(exchange);
    }

    @Override
    public int getOrder() {
        return 0;
    }
}

 

 

### Java 中 Spring Cloud Gateway 与 Eureka 的集成 在微服务架构中,Spring Cloud Gateway 和 Eureka 是两个重要的组件。前者作为API网关负责路由管理和服务间的通信;后者则是一个服务发现工具,用于管理和查找分布式环境中的各个服务实例。 #### 集成方式 当两者共同工作时,可以实现动态的服务注册与发现机制以及灵活的流量控制策略。具体来说,在实际项目里会启动多个微服务并让它们都向Eureka Server 注册自己[^1]。对于像 `service-gateway` 或者 `gateway-server` 这样的网关类应用,则不仅需要完成自身的注册过程,还要配置好如何将来自外部用户的HTTP 请求分发给内部不同类型的业务逻辑处理单元——即其他已知于Eureka 上线的服务实体,比如 `eureka-client-provider` 或者 `user-service` [^2]。 为了达成上述目标,通常会在网关项目的依赖文件(pom.xml 对于Maven 构建体系而言)引入必要的库来支持这种协作关系: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> ``` 接着,在应用程序的主要配置文件 application.yml (或 .properties) 中指定一些参数以便正确连接至Eureka 并定义默认路径匹配规则等细节设置: ```yaml server: port: 8090 spring: cloud: gateway: discovery: locator: enabled: true # 开启基于服务名的路由功能 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ ``` 这段 YAML 文件片段表明了服务器监听端口、激活自动创建指向各在线成员的应用程序接口的功能开关状态,还有指明远程地址以供本地实例定期报告心跳信号之用。 #### 功能差异比较 | 特性 | **Spring Cloud Gateway** | **Eureka** | --- | --- | --- | 主要职责 | 负责接收所有进入系统的 HTTP/HTTPS 流量,并依据预设条件将其重定向到适当的目标位置 | 提供了一个集中式的目录服务平台,允许参与者相互识别对方的存在状况 | | 技术原理 | 建立在一个响应式编程模型之上,能够高效地处理大量并发请求 | 使用 RESTful API 来维护一份实时更新的地图,记录着当前网络内有哪些可用节点及其最新健康情况 | | 扩展能力 | 支持自定义过滤器链、断路保护等功能模块 | 可插拔设计使得第三方开发者可以通过编写适配器的形式接入额外特性 | 综上所述,虽然二者同属 Spring Cloud 生态圈的一员,但在用途方面有着明显的分工界限:一个是面向外部世界的门户卫士,另一个则是维系集群内部秩序的关键角色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大得369

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

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

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

打赏作者

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

抵扣说明:

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

余额充值