API 仕様を使用した高度なポリシー表現
http.req.api式を使用して、API 仕様で定義されている受信リクエストのエンドポイントを識別できます。
http.req.api (“API_Spec_Name”)
set responder policy reject -rule !"http.req.api(\"myspec\").endpoint(\"POST"\",\"/v1/pet/\")
API スキーマの高度なポリシー表現
HTTP メソッドでトラフィックを照合する式
-
単一の HTTP メソッド
http.req.api("petstore").method("POST").text("id").eq("1") -
マルチメソッド
http.req.api("petstore").method("GET|DELETE").exists
URL でトラフィックを照合する式
-
http.api("petstore").path("/v1/pets/*/find")次の条件でのみ受信トラフィックを照合します。/v1/pets/*/find -
http.api("petstore").path("/v1/pets/**")以下で始まるすべてのエンドポイントにマッチします/v1/pets
API 名でトラフィックを照合する式
show api spec gspec
Name: gspec
File: gfile
Type: OAS
-
ファイルタイプが OAS の場合、
operation IDがエンドポイント名になります。例:次の OAS からのエンドポイントに対して受信トラフィックを検証するには:operationId: adexchangebuyer.accounts.list次のポリシー表現を使用してください。http.req.api("schema").apiname("adexchangebuyer.accounts.list").exists -
ファイルタイプが proto の場合、
service nameとrpc nameがエンドポイント名になります。次の例では、EchoService.Echo がエンドポイントです。 サービスEchoService{rpc { rpc Echo(EchoReq) returns (EchoResp) { option (google.api.http) = { get: "/v1/{name=messages/*}" }; } }
API 仕様の値にアクセスする
-
num-整数値。
-
ulong-長整数値。
-
bool-ブーリアン値。
-
double -ダブル値。
-
text-任意の長さの文字列。
http. req.api("petstore.proto"). APIName ("TestPet").NUM("test_num1").eq(1)
繰り返しフィールドの値にアクセスする
http.req.api("petstore.proto", "FindPets').TEXT( "tags", 5 ).contains("mytag")
/v1/pets?tags=1&tags=2&tags=3&tags=4&tags=mytag&tags=6
ネストされたオブジェクトの値にアクセスする
http. req.api("petstore.proto", "TestPet").text( "kennel.location.state" ).contains("California")