springboot整合gateway实现网关功能的示例代码

网友投稿 311 2022-08-29


springboot整合gateway实现网关功能的示例代码

目录1.使用场景:2.代码实现1创建gateway-service服务2创建gateway-client服务3.实现效果

1.使用场景:

网关可提供请求路由与组合、协议转换、安全认证、服务鉴权、流量控制与日志监控等服务。可选的网关有不少,比如 Nginx、、Linkerd 、eureka、 Spring Cloud Gateway、consul等。

Spring Cloud Gateway 针对进来的请求做各种判断和处理,比如说判断请求的合法性、权限验证,请求地址改写,请求参数、头信息、cookie 信息的分析和改写,请求速率控制,日志留存等。而这些都可以方便的通过 Predicate 和 GatewayFilter 来组合实现。

2.代码实现

1创建gateway-service服务

引入依赖

org.springframework.cloud

spring-cloud-starter-gateway

3.0.4

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-discovery

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

org.springframework.cloud

spring-cloud-starter-openfeign

3.0.2

org.springframework.cloud

spring-cloud-loadbalancer

3.0.2

org.springframework.cloud

spring-cloud-starter-loadbalancer

yml配置

server:

port: 8001

springhttp://:

application:

name: gateway-service #服务名

profiles:

active: dev #环境设置

cloud:

gateway:

routes:

# 透传服务

- id: gateway-client #设置路由id(理论上是可以随便写的)

uri: lb://gateway-client #设置路由的url lb://nacos服务注册名称

predicates:

- Path=/client/** #路径匹配规则

filters:

- StripPrefix=1

- id: gateway-consumer

uri: lb://gateway-consumer

predicates:

- Path=/consumer/**

filters:

- StripPrefix=1

跨域配置

@Configuration

public class CorsConfig {

@Bean

public CorsWebFilter corsFilter() {

CorsConfiguration config = new CorsConfiguration();

config.addAllowedMethod("*");

config.addAllowedOrigin("*");

config.addAllowedHeader("*");

UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());

source.registerCorsConfiguration("/**", config);

return new CorsWebFilter(source);

}

}

2创建gateway-client服务

引入依赖

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

0.2.1.RELEASE

org.springframework.cloud

spring-cloud-starter-openfeign

org.springframework.boot

spring-boot-starter-web

yml配置

server:

port: 8002

spring:

application:

name: gateway-client #服务名

profiles:

active: dev #环境设置

cloud:

nacos:

discovery:

server-addr: 127.0.0.1:8848 #nacos服务注册

控制层请求

@RestController

public class TestController {

@RequestMapping("/index")

public String index(){

return "gateway-client";

}

}

启动类

@SpringBootApplication

@EnableDiscoveryClient

public class GatewayClientApplication {

public static void main(String[] args) {

SpringApplication.run(GatewayClientApplication.class, args);

}

}

3.实现效果

采用nacos作为注册中心,启动nacos后再启动gateway-service, gateway-client项目

在nacos发现服务注册成功

在浏览器发起请求

​ ​http://localhost:8001/client/index​​

实际上网关把请求发送到gateway-client服务,返回结果


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python3 运算符(python3ide下载)
下一篇:Python3 列表(python3.9)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~