Spring Cloud GatewayフィルタGlobalFilterの詳細説明

まずはフィルターのシーン

springCloud アーキテクチャでは、ゲートウェイはサービス ルートの転送に使用される重要なコンポーネントです。マイクロサービスの特定の詳細はクライアントから保護されており、クライアントはゲートウェイと対話することのみが必要です。したがって、ゲートウェイは、その名前が示すように、ネットワークのチェックポイントです。街の門番です。したがって、この警備員は、訪問者の身元を認証したり、チェックしたりするなど、多くの作業を行うことができます。最後は手放すことです。したがって、マイクロサービス開発では、この層でフィルターを作成できます。これは非常に良いシナリオです。

 

2 つ、GatewayFilter と GlobalFilter

Spring Cloud Gatewayは動作範囲に応じてGatewayFilterとGlobalFilterに分かれており、両者の違いは以下の通りです。

  1. GatewayFilter: spring.cloud.routes.filters を介して特定のルートの下で構成する必要があり、現在のルートにのみ作用するか、spring.cloud.default-filters を介してグローバルに構成され、すべてのルートに作用します。
  2. GlobalFilter: 設定ファイルで設定する必要はありません。すべてのルートに作用します。最終的に、GatewayFilterAdapter を介して GatewayFilterChain によって認識可能なフィルタにパッケージ化されます。リクエスト サービスとルートの URI を変換するためのコア フィルタです。実際のサービス サービスのリクエスト アドレス。構成は必要ありません。システムの初期化時にロードされ、各ルートで動作します。

GlobalFilter アプリケーション

@Component
public class TestGlobalFilter implements GlobalFilter, Ordered {

	@Override
	public int getOrder() {
		return 0;
	}

	@Override
	public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

		ServerHttpRequest request = exchange.getRequest();
		
		ServerHttpResponse response = exchange.getResponse();
		
		//获取url
		String path = request.getURI().getPath();
		//获取请求头中信息
		String source =  request.getHeaders().getFirst("source");
		
		//做一些动作和业务
		
		return chain.filter(exchange);
	}

}

Guess you like

Origin blog.csdn.net/dongjing991/article/details/132143373