• DJ音乐绽放江西之巅 萍乡武功山帐篷节成功举办 2019-09-13
  • 炎炎夏日要怎么养生? 这些妙招不错! 2019-09-04
  • 四川推动大医院高质量发展 2019-09-04
  • “老赖”欠债不还 未成年子女名下房产将不保 2019-08-29
  • 改为允许室内设置吸烟区 杭州控烟令修改引争议 2019-08-29
  • 7月1日起石济高铁将首次增开G字头列车 2019-08-18
  • 太原网友 :太原千峰南路应该拓宽改造 2019-08-18
  • 中国正青春大型征集,iphoneX等着你! 2019-08-16
  • 《人民日报》与红旗渠 2019-08-16
  • “双一流”建设名单落地:非新无以为进,非旧无以为守 2019-08-09
  • 佛山中式家居品牌“大招”强势登入东阳红木家具市场 2019-08-05
  • 湖南第六批短期援藏队联合中南大学湘雅医院在山南市开展“爱眼护眼”活动 2019-08-05
  • “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 五分钟内反应回复,平均十分钟解决任何IT技术问题,按难度跟工作量收费!

    体彩排列三和值走势图:(九十三)java版spring cloud 多租户社交电子商务平台-API网关服务(Spring Cloud Gateway)

    IT 小兵 |浏览18次 |售价:0元 |联系博客主
    收藏|2019/06/20 16:36

    陕西11选5前二和值走势图 www.wpyw.net 电子商务平台源码请加企鹅求求:三伍三六贰四柒二伍九。1 Spring Cloud Gateway


    在微服务架构中,网关作为服务的一个统一入口,所有的外部客户端访问都需要经过它来调度和过滤,可以实现的功能包括动态路由、负载均衡、授权认证、限流等。


    Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,旨在为微服务架构提供一种简单而有效的统一的API路由管理方式,并为他们提供横切关注点,例如:安全,监控/指标和弹性。


    本篇将示例搭建一个简单的网关服务。


    2 构建网关


    2.1 新建Spring Boot项目,引入相关依赖

    <parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.4.RELEASE</version>
    		<relativePath/>
    	</parent>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<java.version>1.8</java.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-actuator</artifactId>
    		</dependency>
    
    		<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>
    
    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    		</dependency>
    	</dependencies>
    
    	<dependencyManagement>
    		<dependencies>
    			<dependency>
    				<groupId>org.springframework.cloud</groupId>
    				<artifactId>spring-cloud-dependencies</artifactId>
    				<version>Finchley.SR1</version>
    				<type>pom</type>
    				<scope>import</scope>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>


    2.2 application.properties配置

    spring.application.name=api-gateway
    server.port=8888
    #注册中心
    eureka.client.serviceUrl.defaultZone=//localhost:1002/eureka/,//localhost:1003/eureka/
    
    #实例默认通过使用域名形式注册到注册中心:false
    eureka.instance.prefer-ip-address=true
    
    #实例名
    eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}
    
    #是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例
    #默认为false,设为true便开启通过服务中心的自动根据 serviceId 创建路由的功能
    #其中微服务应用名默认大写访问
    spring.cloud.gateway.discovery.locator.enabled=true

    2.3 添加Filter,实现简单的授权认证

    @Configuration
    public class TokenFilter implements GlobalFilter, Ordered {
    
        @Override
        public int getOrder() {
            return -100;
        }
    
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
            String token = exchange.getRequest().getQueryParams().getFirst("token");
           //url不含token参数时返回401状态码
            if (token == null || token.isEmpty()) {
                exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
                return exchange.getResponse().setComplete();
            }
            return chain.filter(exchange);
        }
    }

    2.4 入口程序添加@SpringCloudApplication注解并启动

    @SpringCloudApplication
    public class ApiGatewayApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(ApiGatewayApplication.class, args);
    	}
    
    }


    启动应用,访问 localhost:8888/EUREKA-CLIENT/hello ,可以看到页面401状态码,而token参数再次请求后,则可以看到正常返回了结果(注意服务名为大写)。


    咨询/回复该博客即可获得 2 经验值,咨询/回复被采纳即可获得 2 经验值!
    咨询/回复

    验证码

      换一个
    全部回答(0)
    +1
     加载中...
  • DJ音乐绽放江西之巅 萍乡武功山帐篷节成功举办 2019-09-13
  • 炎炎夏日要怎么养生? 这些妙招不错! 2019-09-04
  • 四川推动大医院高质量发展 2019-09-04
  • “老赖”欠债不还 未成年子女名下房产将不保 2019-08-29
  • 改为允许室内设置吸烟区 杭州控烟令修改引争议 2019-08-29
  • 7月1日起石济高铁将首次增开G字头列车 2019-08-18
  • 太原网友 :太原千峰南路应该拓宽改造 2019-08-18
  • 中国正青春大型征集,iphoneX等着你! 2019-08-16
  • 《人民日报》与红旗渠 2019-08-16
  • “双一流”建设名单落地:非新无以为进,非旧无以为守 2019-08-09
  • 佛山中式家居品牌“大招”强势登入东阳红木家具市场 2019-08-05
  • 湖南第六批短期援藏队联合中南大学湘雅医院在山南市开展“爱眼护眼”活动 2019-08-05
  • “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 黑龙江省福彩时时彩开奖结果 彩票6十1走势图 黑龙江福彩p62开奖结 黑龙江省福彩22选五自选号 电玩注册送38邀请码 竞彩足球混合过关奖金计算器 摔跤游戏大全双人 成都彩票中奖哪里去领 天津时时彩个位走势图 江西快3平台快3投注 上海快三20190515065期 6场半全场能中多少钱 山西快乐十分钟新闻 幸运农场app 北京快乐8上下走势图