Spring Cloud 為DiscoveryClient路由配置謂詞和過(guò)濾器

2024-01-06 11:14 更新

默認(rèn)情況下,網(wǎng)關(guān)為通過(guò)DiscoveryClient創(chuàng)建的路由定義單個(gè)謂詞和過(guò)濾器。

默認(rèn)謂詞是使用模式/serviceId/**定義的路徑謂詞,其中serviceIdDiscoveryClient中服務(wù)的ID。

缺省過(guò)濾器是帶有正則表達(dá)式/serviceId/(?<remaining>.*)和替換文本/${remaining}的重寫路徑過(guò)濾器。這只是在將請(qǐng)求發(fā)送到下游之前從路徑中剝離服務(wù)ID。

如果要自定義DiscoveryClient路由使用的謂詞和/或過(guò)濾器,可以通過(guò)設(shè)置spring.cloud.gateway.discovery.locator.predicates[x]spring.cloud.gateway.discovery.locator.filters[y]來(lái)實(shí)現(xiàn)。 這樣做時(shí),如果要保留該功能,則需要確保在上面包含默認(rèn)謂詞和過(guò)濾器。以下是此示例的示例。

application.properties。 

spring.cloud.gateway.discovery.locator.predicates[0].name: Path
spring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"
spring.cloud.gateway.discovery.locator.predicates[1].name: Host
spring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"
spring.cloud.gateway.discovery.locator.filters[0].name: Hystrix
spring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceId
spring.cloud.gateway.discovery.locator.filters[1].name: RewritePath
spring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/(?<remaining>.*)'"
spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/${remaining}'"

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)