• “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 龙船礼 有讲究 百岁龙 抖精神 2019-07-14
  • 王岐山会见土耳其外长恰武什奥卢 2019-07-14
  • 校企共赢 奥园与北大经济学院达成合作并共同举行中国经济高端论坛 ——凤凰网房产北京 2019-07-05
  • 汕头一企业埋暗管偷排 4直接责任人被刑事拘留 2019-06-28
  • 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 实现中华民族伟大复兴的必由之路 2019-05-03
  • 习近平齐鲁之行的七个感人瞬间 2019-04-19
  • 当今的公知精英都引导人产生一个共识:干什么都不重要,钱就是“事业和面子”。为了钱,出售自己,很现实。因此,许许多多的人只“信仰人民币”。 2019-04-13
  • 要像习近平那样感恩父母 2019-04-05
  • 南开大学出版社张彤:必须每一个环节都“门儿清” 2019-04-05
  • 五分钟内反应回复,平均十分钟解决任何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
     加载中...
  • “常青藤爸爸”一年盈利5000万秘方:靠质量和流量 2019-07-18
  • “她用生命完成了最后一堂课” 2019-07-18
  • 各地聚焦学习十九大精神--新疆频道--人民网 2019-07-17
  • 龙船礼 有讲究 百岁龙 抖精神 2019-07-14
  • 王岐山会见土耳其外长恰武什奥卢 2019-07-14
  • 校企共赢 奥园与北大经济学院达成合作并共同举行中国经济高端论坛 ——凤凰网房产北京 2019-07-05
  • 汕头一企业埋暗管偷排 4直接责任人被刑事拘留 2019-06-28
  • 坚守岗位守护绿城美丽与整洁 2019-06-02
  • 最高降39.28万元 捷豹路虎进口车型调价 2019-06-02
  • 新华时评:磋商,不等于反复折腾 2019-05-03
  • 实现中华民族伟大复兴的必由之路 2019-05-03
  • 习近平齐鲁之行的七个感人瞬间 2019-04-19
  • 当今的公知精英都引导人产生一个共识:干什么都不重要,钱就是“事业和面子”。为了钱,出售自己,很现实。因此,许许多多的人只“信仰人民币”。 2019-04-13
  • 要像习近平那样感恩父母 2019-04-05
  • 南开大学出版社张彤:必须每一个环节都“门儿清” 2019-04-05
  • 新快3走势 竞彩篮球大小分攻略 足彩胜负彩18133期分析 江西时时彩投注软件怎样下载软件怎样下载 上海时时彩彩乐乐 jj三张牌下载 福建22选5开奖结果 全無錯六肖中特 重庆幸运农场苹果版 新疆25选7大星走势图 体彩高频彩票11选5 王牌国际娱乐城网址 三三连码出是什么生肖 河北快三电视走势图 河南快赢481中奖详情