This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
使用 API 规范的高级策略表达式
您可以将统一的 API 规范导入到 Web App Firewall 导入页面,然后使用 API 规范创建高级策略表达式。您可以根据表达式为传入的 API 流量配置相应的操作。 API 规范包含端点、架构和参数。传入的 API 流量可以是 gRPC 或 REST 类型。
您可以使用 http.req.api
表达式来识别 API 规范中定义的传入请求中的端点。
语法:
http.req.api (“API_Spec_Name”)
示例:
set responder policy reject -rule !"http.req.api(\"myspec\").endpoint(\"POST"\",\"/v1/pet/\")
如果流量与 API 规范中指定的端点不匹配,则系统会拒绝所有流量。
API 架构的高级策略表达式
您可以使用以下操作为 API 创建高级策略表达式:
必备条件。
使用 Web App Firewall 中的导入选项导入 API 规范文件。
有关更多信息,请参阅 导入。
通过 HTTP 方法匹配流量的表达式
使用 HTTP 字符串方法来限制匹配的 API。此字符串可以包含一个或多个 HTTP 方法,以 “ | ” 分隔或者可以包含通配符 (*)。当指定多个方法时,表达式的计算结果为方法间的 OR 条件。 |
例如,GET、PUT 或 DELETE 将传入的请求与 HTTP 方法 GET OR PUT OR DELETE 进行匹配。
示例:
-
单个 HTTP 方法
http.req.api("petstore").method("POST").text("id").eq("1")
-
多种方法
http.req.api("petstore").method("GET|DELETE").exists
按 URL 匹配流量的表达式
PATH(URL 字符串)用于匹配包含通配符的端点。单星号 (*) 匹配单个分段,而双星号 (**) 匹配双星号前缀的所有可能分段。
示例:
-
http.api("petstore").path("/v1/pets/*/find")
它仅将传入流量与/v1/pets/*/find
匹配 -
http.api("petstore").path("/v1/pets/**")
它匹配所有端点,开头为/v1/pets
按 API 名称匹配流量的表达式
使用 APINAME(名称字符串)表达式按 API 名称限制匹配流量。您也可以通过运行 show 命令来使用 API 名称字符串,如以下示例所示:
show api spec gspec
Name: gspec
File: gfile
Type: OAS
<!--NeedCopy-->
-
如果文件类型为 OAS,则
operation ID
用作端点名称。示例:针对来自以下 OAS 的端点验证传入流量:
operationId: adexchangebuyer.accounts.list
使用以下策略表达式:
http.req.api("schema").apiname("adexchangebuyer.accounts.list").exists
-
如果文件类型为 proto,则
service name
和rpc name
用作端点名称。在以下示例中,EchoService.Echo 是端点: service EchoService { rpc Echo(EchoReq) returns (EchoResp) { option (google.api.http) = { get: “/v1/{name=messages/*}” }; } }
访问 API 规范中的值
您可以按名称、路径、查询参数、JSON 正文或 gRPC 正文访问 API 规范中的字段。要定义参数的类型,请使用 PI 表达式。支持以下类型:
- num-一个整数值。
- ulong-一个长整数值。
- bool-一个布尔值。
- double - 双精度值。
- text - 任意长度的字符串。
示例: 要使用与值 1 匹配的数字参数验证传入流量,请使用以下表达式:
http. req.api("petstore.proto"). APIName ("TestPet").NUM("test_num1").eq(1)
访问重复字段中的值
要访问 API 中的重复对象,请使用第二个参数作为重复索引。 访问数组 外部会产生未定义的值。
示例:
要检索“FindPets”端点中的第五个标签,请使用:
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
访问嵌套对象中的值
对象可以嵌套在其他对象中。同一文档中的嵌套对象中可能会出现相同的字段名。但是,完整访问权限名称仍必须是唯一的。 要访问嵌套字段,请将字段名称与“.”(点)连接起来作为分隔符。
示例:使用 kennel.location.state 从以下 JSON 中检索加利福尼亚州。
{ “kennel” : { “location” : { “state” : “California” } } }
表达式
http. req.api("petstore.proto", "TestPet").text( "kennel.location.state" ).contains("California")
使用对象表达式访问值
Object () 表达式用于访问重复对象的子字段。如果有两个或更多使用不同值配置的对象,则可以创建表达式来验证特定于一个值的对象。 例如,在下面的 JSON 正文中,对象“foo”有两个值,分别为一和无。 { “foo” : [ { “bar” : “one” }, { “bar” : “none” } ] }
要将该值与零值进行比较,可以按如下方式配置表达式:
HTTP. req.api("schema").object("foo",1).text("bar").eq("none")
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.