SpringCloud中的gateWay 閘道器

2021-10-07 04:04:16 字數 4488 閱讀 6233

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...