1、api閘道器介紹
2、spring cloud gateway
3、spring cloud gateway核心概念
所有服務,都需要在nacos中註冊服務(包括閘道器)
注意版本號
<
!--服務註冊nacos--
>
org.springframework.cloud<
/groupid>
spring-cloud-starter-alibaba-nacos-discovery<
/artifactid>
<
/dependency>
<
!--gateway閘道器--
>
org.springframework.cloud<
/groupid>
spring-cloud-starter-gateway<
/artifactid>
<
/dependency>
<
!--谷歌gson--
>
com.google.code.gson<
/groupid>
gson<
/artifactid>
<
/dependency>
<
/dependencies>
server.port=8222
# 閘道器服務埠
server.port=8222
# 服務名
# nacos服務位址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:
8848
#使用服務發現路由
spring.cloud.gateway.discovery.locator.enabled=true
#定義規則相當於nginx
# 0 是當前模組
#設定路由id 理論上隨便寫,建議用服務名
spring.cloud.gateway.routes[
0].id=service-acl
#設定路由的uri lb://nacos註冊服務名稱
spring.cloud.gateway.routes[
0].uri=lb://service-acl
#設定路由斷言,匹配規則,**servicerid為auth-service的/auth/路徑
spring.cloud.gateway.routes[
0].predicates= path=/*/acl/**
#1 是 service-edu
#配置service-edu服務
spring.cloud.gateway.routes[
1].id=service-edu
spring.cloud.gateway.routes[
1].uri=lb://service-edu
spring.cloud.gateway.routes[
1].predicates= path=/teacher/**
#2#3
#4#5
#6#.....
server
:port
:8222
spring::
cloud
:gateway
:discovery
:locator
:enabled
:true
routes:-
id: service-acl
uri: lb://service-acl
predicates
:- path=/*/acl/** # 路徑匹配-id
: service-edu
uri: lb://service-edu
predicates
:- path=/eduservice/** # 路徑匹配-id
: service-ucenter
uri: lb://service-ucenter
predicates
:- path=/ucenter/** # 路徑匹配
nacos
:discovery
:server-addr
: 127.0.0.1:
8848
2.1filters 過濾spring::
cloud
:gateway
:discovery
:locator
:enabled
:true
routes:-
id: renren-fast
uri: lb://renren-fast
# 前端帶有 api 路徑匹配
predicates
:- path=/api/**
#把前面的路徑重寫成後面的路路徑 api 換成 return-fast
filters
:- rewritepath=/api(?
>/?.*), /renren-fast/$\
4、編寫啟動類
@enablediscoveryclient
//服務註冊到nacos
public
class
}測試一下,如果有問題請使用註解的方式
配置後啟動類可以不用加跨域的註解 @crossorigin
@configuration
public
class
corsconfig
}
/**
* * 全域性filter,統一處理會員登入與外部不允許訪問的服務
* *
* */
@component
public
class
authglobalfilter
implements
globalfilter
, ordered
else}}
//內部服務介面,不允許外部訪問
}
服務閘道器呼叫服務時可能會有一些異常或服務不可用,它返回錯誤資訊不友好,需要我們覆蓋處理
/**
* 覆蓋預設的異常處理
* *
* */
@configuration
@enableconfigurationproperties()
public
class
errorhandlerconfig
@bean
@order
(ordered.highest_precedence)
public errorwebexceptionhandler errorwebexceptionhandler
(errorattributes errorattributes)
}
/**
* 自定義異常處理
* * 異常時用json代替html異常資訊*
* *
*/public
class
jsonexceptionhandler
extends
defaulterrorwebexceptionhandler
/** * 獲取異常屬性
*/@override
protected map
geterrorattributes
(serverrequest request,
boolean includestacktrace)
/** * 指定響應處理方法為json處理的方法
* @param errorattributes
*/@override
protected routerfunction
getroutingfunction
(errorattributes errorattributes)
/** * 根據code獲取對應的httpstatus
springcloud中的gateway閘道器
引入依賴 com.atguigu groupid common utils artifactid 0.0.1 snapshot version dependency org.springframework.cloud groupid spring cloud starter alibaba naco...
Spring Cloud中的閘道器
在微服務實施之後,各個服務的拆分粒度很小,對於客戶端來說,做乙個操作可能會涉及到後端的多個服務元件的呼叫,那意味著它需要頻繁的發起多次訪問才能進行資料聚合實現使用者的功能。如果我們在所有的微服務之前增加乙個閘道器,對於客戶端來說它需要做什麼功能操作直接呼叫閘道器並且告訴閘道器所要做的事情即可,閘道器...
GA中獲取產品品類資料
在資料分析的過程中,總是想要獲得產品品類的訪問資料,轉化率,銷售金額等資料。在ga中,可使用以下幾種方法獲得相關資料。1.分組 根據品類url的特點,將同一品類下的url歸結為乙個分組。當然,分組進行的前提是您 的品類url是有各自的特點,品類內的url存在共性,與其他品類的url存在很大的異性 2...