W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
以下描述了替代樣式的網(wǎng)關(guān)。先前文檔的None適用于以下內(nèi)容。
Spring Cloud Gateway提供了一個(gè)名為ProxyExchange
的實(shí)用程序?qū)ο螅梢栽诔R?guī)的Spring web處理程序中將其用作方法參數(shù)。它通過鏡像HTTP動詞的方法支持基本的下游HTTP交換。使用MVC,它還支持通過forward()
方法轉(zhuǎn)發(fā)到本地處理程序。
要使用ProxyExchange
,只需在類路徑中包含正確的模塊(spring-cloud-gateway-mvc
或spring-cloud-gateway-webflux
)。
MVC示例(代理對遠(yuǎn)程服務(wù)器下游“ /測試”的請求):
@RestController @SpringBootApplication public class GatewaySampleApplication { @Value("${remote.home}") private URI home; @GetMapping("/test") public ResponseEntity<?> proxy(ProxyExchange<byte[]> proxy) throws Exception { return proxy.uri(home.toString() + "/image/png").get(); } }
與Webflux相同:
@RestController @SpringBootApplication public class GatewaySampleApplication { @Value("${remote.home}") private URI home; @GetMapping("/test") public Mono<ResponseEntity<?>> proxy(ProxyExchange<byte[]> proxy) throws Exception { return proxy.uri(home.toString() + "/image/png").get(); } }
ProxyExchange
上有一些便利的方法可以使處理程序方法發(fā)現(xiàn)并增強(qiáng)傳入請求的URI路徑。例如,您可能希望提取路徑的尾隨元素以將它們傳遞到下游:
@GetMapping("/proxy/path/**") public ResponseEntity<?> proxyPath(ProxyExchange<byte[]> proxy) throws Exception { String path = proxy.path("/proxy/path/"); return proxy.uri(home.toString() + "/foos/" + path).get(); }
網(wǎng)關(guān)處理程序方法可以使用Spring MVC或Webflux的所有功能。因此,例如,您可以注入請求標(biāo)頭和查詢參數(shù),并且可以使用映射批注中的聲明來約束傳入的請求。有關(guān)這些功能的更多詳細(xì)信息,請參見Spring MVC中的@RequestMapping
文檔。
可以使用ProxyExchange
上的header()
方法將標(biāo)頭添加到下游響應(yīng)中。
您還可以通過將映射器添加到get()
等方法來操縱響應(yīng)頭(以及響應(yīng)中您喜歡的任何其他內(nèi)容)。映射器是Function
,它接收傳入的ResponseEntity
并將其轉(zhuǎn)換為傳出的ResponseEntity
。
為不傳遞到下游的“敏感”標(biāo)頭(默認(rèn)情況下為“ cookie”和“授權(quán)”)以及“代理”標(biāo)頭(x-forwarded-*
)提供了一流的支持。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: