まずはフィルターのシーン
springCloud アーキテクチャでは、ゲートウェイはサービス ルートの転送に使用される重要なコンポーネントです。マイクロサービスの特定の詳細はクライアントから保護されており、クライアントはゲートウェイと対話することのみが必要です。したがって、ゲートウェイは、その名前が示すように、ネットワークのチェックポイントです。街の門番です。したがって、この警備員は、訪問者の身元を認証したり、チェックしたりするなど、多くの作業を行うことができます。最後は手放すことです。したがって、マイクロサービス開発では、この層でフィルターを作成できます。これは非常に良いシナリオです。
2 つ、GatewayFilter と GlobalFilter
Spring Cloud Gatewayは動作範囲に応じてGatewayFilterとGlobalFilterに分かれており、両者の違いは以下の通りです。
- GatewayFilter: spring.cloud.routes.filters を介して特定のルートの下で構成する必要があり、現在のルートにのみ作用するか、spring.cloud.default-filters を介してグローバルに構成され、すべてのルートに作用します。
- 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);
}
}