栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud gateway

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud gateway

SpringCloud gateway 一、服务搭建 1.1 Eureka-server

新建Eureka-service模块

引入依赖、添加配置

  
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-server
        
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
server:
  port: 9000  #该 Module 的端口号

eureka:
  instance:
    hostname: localhost #eureka服务端的实例名称,

  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版服务注册中心

启动成功后访问http://localhost:9000/eureka/

1.2 gateway-server

新建gateway-server模块

引入依赖

        
            org.springframework.cloud
            spring-cloud-starter-gateway
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        

将gateway服务注册到Eureka

server:
  port: 8080

spring:
  application:
    name: space-gateway

eureka:
  instance:
    prefer-ip-address: true    #是否使用ip地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port}   #ip:port
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/

二、服务路由

只记录了两种路由方式

2.1 ip路由

修改yml文件

spring:
  application:
    name: space-gateway
  cloud:
    gateway:
      routes:
        - id: space-uploadfile  # 路由ID 唯一
          uri: http://localhost:8081/  # 目标URI,路由到微服务的地址
          #路由规则
          predicates:     # 断言(判断条件)
            - Path=/uploadFile
@Component
public class AccessFilter implements GlobalFilter, Ordered {

	private Logger log = LoggerFactory.getLogger(AccessFilter.class);

	@Override
	public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    //获取请求头中的token
    //getFirst()并不是获取第一个,不管是第几个都用getFirst()
		String token = exchange.getRequest().getHeaders().getFirst("token");
		if (token == null){
			log.warn("token is null...");
			ServerHttpResponse response = exchange.getResponse();
			response.getHeaders().add("Content-Type","application/json;charset=utf-8");
			response.setStatusCode(HttpStatus.UNAUTHORIZED);
			String message = "{"message":"" + HttpStatus.UNAUTHORIZED.getReasonPhrase() + ""}";
			DataBuffer buffer = response.bufferFactory().wrap(message.getBytes());
      //返回错误信息
			return response.writeWith(Mono.just(buffer));
		}
		log.info("token is ok...");
    //通过放行
		return chain.filter(exchange);
	}

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/888151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号