[SpringCloud]ゲートウェイで一般的に使用される述語(18)

述語の紹介

  春クラウドゲートウェイは春WebFluxのようルートになる  HandlerMappingインフラストラクチャは一部を一致させますSpring Cloud Gatewayには、多くの組み込みルーティングアサートファクトリが含まれています。これらすべてのアサーションは、HTTPリクエストのさまざまな属性と一致します。あなたは、複数のルートアサーションとロジック植えることができますandステートメントを組み合わせて使用します

  公式ウェブサイト:https : //cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#gateway-request-predicates-factories

  一般的に使用される述語:

  

 

一般的に使用される述語

  デモプロジェクト構築リファレンス:[SpringCloud]ゲートウェイルーティング構成(17)、curlコマンドを使用したデモリクエスト

  1、ルート述語の後

  After断言一つのパラメータ、datetime(ジャワです  ZonedDateTime)。アサーションは、指定された日時の後に発生したリクエストと一致します。次の例では、ルーティング後にアサートを構成します。

  例1. application.yml

1  スプリング:
 2    クラウド:
 3      ゲートウェイ:
 4        ルート:
 5          - id:after_route
 6            uri:http:// localhost:8001 7            述語:
 8              -After = 2020-04-20T23:57:57.308 + 08:00 [アジア/上海]

  このルートは、2020年4月20日の23:57タイムゾーン時間(上海)以降のすべての要求に準拠しています。

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1

  2、ルート述語の前

  Before断言一つのパラメータ、datetime(ジャワです  ZonedDateTime)。このアサーションは、指定されたの前に発生したリクエストと一致しますdatetime次の例では、プレルーティングアサーションを構成します。

  例2. application.yml

1  スプリング:
 2    クラウド:
 3      ゲートウェイ:
 4        ルート:
 5          - id:before_route
 6            uri:http:// localhost:8001 7            述語:
 8              -Before = 2020-04-21T23:57:57.308 + 08:00 [Asia /上海]

  このルートは、2020年4月21日の23:57タイムゾーン(上海)より前の要求に準拠しています。

  3、ルート述語間

Between断言2つの引数は、datetime1datetime2 これは、Javaで  ZonedDateTimeオブジェクト。このアサーションはdatetime1、前後に発生しリクエスト一致しますdatetime2このdatetime2パラメーターはpostでなければなりませんdatetime1次の例では、ルート間のアサーションを構成します。

  例3. application.yml

1  スプリング:
 2    クラウド:
 3      ゲートウェイ:
 4        ルート:
 5          - id:between_route
 6            uri:http:// localhost:8001
 7            述語:
 8              -Between = 2020-04-20T23:57:57.308 + 08:00 [アジア/上海]、2020-04-21T23:57:57.308 + 08:00 [アジア/上海]

  4、Cookieルート述語

Cookie断言二つのパラメータ、クッキーの使用  nameregexp(Javaの正規表現です)。アサーションは、指定された名前のCookieと一致し、その値は正規表現と一致します。次の例では、Cookieルーティングアサーションを構成します。

  例4. application.yml

1  スプリング:
 2    クラウド:
 3      ゲートウェイ:
 4        ルート:
 5          - id:cookie_route
 6            uri:http:// localhost:8001
 7            述語:
 8              -Cookie = username、xiaoming

  このルートは、のために一致する名前があるユーザー名をし、正規表現のマッチングを暁明クッキーを要求します。

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1 --cookie "username = xiaoming"    

  5、ヘッダールート述語

  説明Header断言は、ヘッダーnameと1つ(Java正規表現)の2つのパラメーターを取りますregexpアサーションは、指定された名前のヘッダーと一致し、その値は正規表現に一致します。次の例では、ヘッダールーティングアサーションを構成します。

  例5. application.yml

1 春:
2   クラウド:
3     ゲートウェイ:
4つの ルート: 5- id:header_route 6 uri:http:// localhost:8001 7 predicates:8- Header = X-Request-Id、\ d +

  要求がで指定されている場合X-Request-Idの値は\d+正規表現マッチングヘッダ(即ち、一つ以上の桁の値)は、ルート一致

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1 -H "X-Request-Id:123"

  6、ホストルート述語

  これは、Host断言ホスト名のリスト:つのパラメータを取りますpatternsこのパターンは、.セパレータ付きのAntスタイルのパターンです。アサーションHostパターンマッチングマッチングヘッダ。次の例では、ホストルートアサーションを構成します。

  例6. application.yml

1春:
2クラウド:
3ゲートウェイ:
4つのルート:
5-id:host_route
6 URI:http:// localhost:8001
7つの述語:
8-Host = **。x.com

  リクエストHostルートマッチングのヘッダー値が含まれている場合 **。X.com

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1 -H "Host:demo1.x.com"

  7、メソッドルート述語

Method断言必要なmethodsHTTP一致させる方法のパラメータは、これは、1つの以上のパラメータです。次の構成メソッドの例では、アサーションをルーティングします。

  例7. application.yml
1春:
2クラウド:
3ゲートウェイ:
4つのルート:
5-id:method_route
6 URI:http:// localhost:8001
7つの述語:
8-メソッド= GET

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1 -X GET

  8、パスルート述語

  Path断言二つのパラメータ:春のリストPathMatcher patternsと、オプションのコールサインmatchOptionalTrailingSeparator次の例では、パスルーティングアサーションを構成します。

  例8. application.yml
1春:
2クラウド:
3ゲートウェイ:
4つのルート:
5-id:path_route
6 URI:http:// localhost:8001
7つの述語:
8-Path = / payment / get / **

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1 

  9、ルート述語のクエリ

  説明されているのは、Query断言必須paramとオプションの2つのパラメーターを取りますregexp(Java正規表現です)。次の例では、クエリルーティングアサーションを構成します。

  例9. application.yml

1春:
2クラウド:
3ゲートウェイ:
4つのルート:
5-id:query_route
6 URI:http:// localhost:8001
7つの述語:
8-クエリ=緑

  リクエストにクエリパラメータが含まれている場合、前述のルートはと一致します。green

  テストリクエストコマンド:curl http:// localhost:9527 / payment / get / 1?Green = 1

  10、RemoteAddrルート述語

RemoteAddr必要なアサーションリストsources例えば文字列CIDR表記(IPv4またはIPv6)であり、192.168.0.1/16192.168.0.1IPアドレスであり16、サブネットマスク)。次の例では、RemoteAddrルーティング述語を構成します。

  例10. application.yml
1春:
2クラウド:
3ゲートウェイ:
4つのルート:
5-id:query_route
6 URI:http:// localhost:8001
7つの述語:
8-RemoteAddr = 192.168.1.1 / 24

  リクエストテストコマンド:curl http://192.168.1.4:9527/payment/get/1

  11、加重ルート述語

  これは、Weight断言2つのパラメータを持っているgroupweight(int)を。重みはグループで計算されます。次の例では、ウェイトルーティングアサーションを構成します。

  例11. application.yml

1  スプリング:
 2    ゲートウェイ:
 3      ディスカバリー:
 4        ルート:
 5          - id:weight_high
 6            uri:http:// localhost:8001
 7            述語:
 8              -Weight =
 group1、8 9          - id:weight_low
 10            uri:http:// localhost :8002
 11            述語:
 12-              ウェイト=グループ1、2

  このルートは、トラフィックの約80%を http:// localhost:8001に転送し、トラフィックの約20%をhttp:// localhost:8001に転送します

  リクエストテストコマンド:curl http:// localhost:9527 / payment / get / 1

 

おすすめ

転載: www.cnblogs.com/h--d/p/12741901.html