SpringCloud中GateWay的詳細使用
gateway的三大法寶
- 路由(router)
- 斷言(predicate)
- 過濾器(filter)
匯入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.router的詳細配置
1.1 yml檔案進行配置
spring:
application:
name: cloud-gateway
cloud:
gateway:
discovery:
locator:
enabled: true #是否開啟負載均衡策略
routes:
- id: payment-gateway1 #路由的id,保證唯一就行,常用服務名稱
uri: http://localhost:8081 #想要代理的路由介面
predicates:
- Path=/payment/lb/** #斷言:進行指定的路徑路由
這裡的意思是利用閘道器進行路由代理,對外暴露介面9527,隱藏原來的服務埠,這裡只需要訪問 http://localhost:9527/payment/lb 就能代替原來的服務,進行埠的訪問
1.2 配置類進行路由代理
@Configuration
public class GatewayConfig {
/*
* 第二種代理的方法
* 只需要訪問 http://localhost:9527/guonei 就能訪問到uri中的網址
* */
@Bean
public RouteLocator customerRouteLocator(RouteLocatorBuilder builder){
RouteLocatorBuilder.Builder routes = builder.routes();
routes.route("path var",
r ->r.path("/guonei")
.uri("http://news.baidu.com/guonei")).build();
return routes.build();
}
}
2.斷言(官網有11種)
spring:
application:
name: cloud-gateway
cloud:
gateway:
discovery:
locator:
enabled: true
routes:
- id: payment-gateway1 #路由的id,保證唯一就行,常用服務名稱
#uri: http://localhost:8081 #想要代理的路由介面
uri: lb://CLOUD-PAYMENT
predicates:
- Path=/payment/lb/** #斷言:進行指定的路徑路由
- After=2020-10-09T21:09:54.173887100+08:00[Asia/Shanghai] #指定時間後才能進行訪問
#- Cookie=name,zk #利用curl進行訪問測試 http://localhost:9527/payment/lb --cookie "name=zk"
#- Header=X-Request-Id, \d+ #請求頭必須是正整數 http://localhost:9527/payment/lb -H "X-Request-Id:123"
#- Host=**.somehost.org,**.anotherhost.org # http://localhost:9527/payment/lb -H "Host: new.somehost.org"
#- Method=GET # get請求才允許訪問
#- Query=username, \d+ # http://localhost:9527/payment/lb?username=123
After中的時間格式的獲取可以自己寫個方法進行獲取(可以用來做定時開放介面)
public static void main(String[] args) {
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);
}
curl是利用cmd進行測試(以cookie進行舉例,後面都有訪問方式)
3.filter
註冊進spring容器,實現 GlobalFilter, Ordered 介面
@Component
@Slf4j
public class MyGlobalFilter implements GlobalFilter, Ordered {
//具體的驗證可以獲取相應的資料進行驗證
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
String name = exchange.getRequest().getQueryParams().getFirst("name");//獲取請求的引數,進行驗證
if (name==null){
log.info("請求的引數為空,資料異常");
exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);
return exchange.getResponse().setComplete();
}
return chain.filter(exchange); //放行給下一個過濾器
}
@Override
public int getOrder() {
return 0; //執行的順序,數值越小是,優先順序越高
}
}
相關文章
- SpringCloud GateWay 使用 閘道器路由SpringGCCloudGateway路由
- SpringCloud之GatewaySpringGCCloudGateway
- springcloud-路由gatewaySpringGCCloud路由Gateway
- js中cookie的使用詳細分析JSCookie
- 詳細資訊用於javascript中的承諾使用詳解JavaScript
- 使用springcloud gateway搭建閘道器(分流,限流,熔斷)SpringGCCloudGateway
- SpringCloud(四)GateWay閘道器SpringGCCloudGateway
- SpringCloud(五)GateWay閘道器SpringGCCloudGateway
- 極速體驗SpringCloud GatewaySpringGCCloudGateway
- jsp中c標籤的詳細使用JS
- springcloud服務閘道器-gatewaySpringGCCloudGateway
- Springcloud教程——GateWay閘道器元件SpringGCCloudGateway元件
- SpringCloud 微服務閘道器 Gateway 元件SpringGCCloud微服務Gateway元件
- SpringCloud微服務專案實戰 - API閘道器Gateway詳解實現SpringGCCloud微服務APIGateway
- Vue 中 $on $once $off $emit 詳細分析,以及使用VueMIT
- golang 中 channel 的詳細使用、使用注意事項及死鎖分析Golang
- Docker exec 命令的詳細使用Docker
- 五、SpringCloud alibaba 之 閘道器GateWaySpringGCCloudGateway
- SourceTree詳細使用教程
- Git使用詳細教程Git
- Java中的static詳細講解Java
- php中curl的詳細解說PHP
- SpringCloud系列之閘道器(Gateway)應用篇SpringGCCloudGateway
- spring-cloud-kubernetes與SpringCloud GatewaySpringCloudGCGateway
- Python - random 庫的詳細使用Pythonrandom
- github的詳細使用,非常簡單!Github
- java中cookie操作詳細JavaCookie
- PhpStorm中如何使用database工具,詳細操作方法PHPORMDatabase
- Java中泛型的詳細解析,深入分析泛型的使用方式Java泛型
- 轉 Git使用詳細教程Git
- ORACLE EXPDP命令使用詳細Oracle
- 方法中引數的型別詳細型別
- vue3保證你看懂watch和watchEffect的詳細詳細使用Vue
- SpringCloud系列之API閘道器(Gateway)服務ZuulSpringGCCloudAPIGatewayZuul
- SpringCloud-Gateway 閘道器路由、斷言、過濾SpringGCCloudGateway路由
- SpringCloud元件: GateWay整合Eureka轉發服務請求SpringGCCloud元件Gateway
- 萬字長文:SpringCloud gateway入門學習&實踐SpringGCCloudGateway
- SpringCloud 2020.0.4 系列之 Gateway入門SpringGCCloudGateway