API 属性

网关使用这些属性控制某些策略的行为。通常,提供属性,但策略还提供属性设置。

IBM® API Connect 中,可创建包含特定于目录的值的 API 属性,这样不需要修改源代码。然后,可在 API 定义中其他位置引用属性。

表中显示了各种策略的预先提供的 API 属性。

用于控制 invoke 策略行为的调用相关 API 属性的列表。
表 1. 用于控制 invoke 策略的属性
属性 必需 描述 数据类型
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-decode-request-params 如果设置为值 true,那么针对调用 target-url 的变量定义引用的任何请求参数对 URL 进行了解码。缺省行为是不解码任何参数,从而将其发送到目标 URL 而不对其进行更改。 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-invoke-suppress-clientid 如果使用值 true 设置或者未指定,那么会禁止将 X-IBM-Client-Id HTTP 头(如果在 API 请求上指定)发送到调用目标 URL。 如果使用值 false 设置,那么不会再禁止将 X-IBM-Client-Id HTTP 头发送到调用目标 URL。

此属性仅受 DataPower® Gateway(与 v5 兼容) 支持。如果使用的是 DataPower API Gateway,那么,要实现相同的功能,请将 header-control 属性添加到您的 API 的 OpenAPI 定义中的 invoke 策略配置中,如以下示例所示。

禁止 X-Client-ID 头,如下所示:
- invoke:
    target-url: http://myhostname/mypath
    header-control:
        type: blacklist
        values:
            - ^X-Client-ID$
禁止 userId 查询参数,如下所示:
- invoke:
    target-url: http://myhostname/mypath
    parameter-control:
        type: blacklist
        values:
            - ^userId$
布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-optimize-invoke 如果设置为 false,那么会阻止将策略中最后一个调用替换为代理。在网关中执行 API 时,非 false 的任何其他值(不区分大小写)可能会导致将策略中最后一个调用替换为代理。 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-queryparam-encode-plus-char 如果设置为值 true,那么调用和代理策略的目标 URL 的查询参数值中的所有“+”字符都将编码为“%2F”。

缺省值为 false

布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-api-enforce-response-limits 如果设置为值 true,那么将允许对响应规则实施 JSON 解析器。如果响应主体大小大于在 DataPower 域中设置的 JSON 解析器限制,那么将返回状态码 500。
注: x-ibm-gateway-api-enforce-response-limits 属性受 DataPower Gateway(与 v5 兼容) 支持,但不受 DataPower API Gateway 支持。但是,如果使用的是 DataPower API Gateway,请考虑在 API 组合件中使用 Parse 策略来实施这些限制。

有关不同网关类型的信息,请参阅 API Connect 网关类型

布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-invoke-keep-payload 如果设置为值 true,那么 invoke 策略会在 HTTP DELETE 方法上发送有效内容。此属性可用于 IBM DataPower Gateway V7.7.1.1 和更高版本。

缺省值为 false

布尔
用于控制 map 策略行为的映射相关 API 属性的列表。
表 2. 用于控制 map 策略的属性
属性 必需 描述 数据类型
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-array-first-element-value IBM API Management V4.0 中,如果映射源值来自数组,那么仅输出第一个值。在 API Connect 中,缺省行为是返回所有数组元素值的数组。要保持与 IBM API Management V4.0 的兼容性,请将此 API 属性设置为 true,以仅返回第一个数组元素值。 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-resolve-apic-variables 缺省情况下,会解析映射配置中找到的任何 API Connect 变量。例如,$(request.headers.content-type) 解析为请求的内容类型头。由于在每个映射属性中搜索变量可能会占用大量 CPU,因此可以通过将此 API 属性设置为 false 而选择不解析变量。如果此属性未配置或设置为任何其他值,那么搜索这些变量的现有行为将继续。请注意,如果引用的变量来自配置的映射输入,那么映射值 JavaScript 片段中的变量用法不会更改。 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-create-empty-array 此属性控制映射策略如何处理空数组的输出;它可以具有下列值:
  • all:输出所有空数组,包括空的子代数组。如果此属性未配置或具有无效值,那么这是缺省值。
  • parent:仅输出当前属性的空数组值。不会尝试此属性的子代映射操作。
  • none:防止生成任何空输出数组值。
字符串
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-optimize-schema-definition 如果策略输出定义引用了非常复杂的模式定义(例如,通过导入非常复杂的 WSDL 模式生成的一些非常复杂的模式),那么将此属性的值设置为 true 以提高映射策略的性能。

当引用的定义作为模式的值提供时,映射策略将从 API 定义构建模式。如果该模式没有生成循环引用的引用,那么将此属性设置为 true 可能会在生成某些已经生成的相同模式时提供性能优势。但是,在模式非常复杂(具有许多潜在循环引用)的情况下,生成的模式可能有所不同,因为增强的模式处理以不同方式处理循环引用。因此,在这种情况下,您应检查生成的输出以确定所获得的性能优势是否与映射策略输出中的更改无关。

此属性的缺省值是 false,用于维持现有的行为和性能。

布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-null-value 将此 API 属性的值设置为 true 以允许将来自 map 策略的输入数据的值为 null 的属性映射到输出文档。缺省情况下,来自 map 策略的输入数据的值为 null 的属性不映射到输出文档。 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-resolve-xmlinput-datatypes 具有数字数据或布尔数据的 XML 输入元素不含任何元数据用于指示此数据应作为字符串值进行映射还是作为特定数据类型进行映射。如果将此属性的值设置为 false,那么 XML 输入元素始终作为字符串进行映射。如果将该值设置为 true,那么数字值或布尔值 XML 输入元素将作为来自输入模式的对应数据类型进行映射。

缺省值为 false

布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-xml-empty-element 此属性可控制 map 策略处理 XML 输入空元素的方式,并且当输入文档为 XML 时,它会影响 JSON 输出;它可以具有下列值:
  • string:空 XML 元素的值被视为空字符串。 如果此属性未配置或具有无效值,那么这是缺省值。
  • null:空 XML 元素的值被视为空值。除非同时为 API 属性 x-ibm-gateway-map-null-value 指定值 true,否则不会将此元素映射到 JSON 输出属性。
  • none:忽略空 XML 元素。
布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-schema-definition-reference-limit 将此属性的值设置为整数值,指定循环模式定义的最大允许迭代次数。

缺省值为 1,这意味着不遵循循环模式定义。最大可能值为 5。如果指定大于 5 的整数值,那么假定值为 5。如果指定非数字值,那么将假定值为 1。

字符串
x-ibm-gateway-emulate-v4-plan-rate-limit 缺省情况下,在 IBM API Connect V2018 中,如果仅为计划而不是为计划中的 API 操作配置了速率限制,那么无论请求 API 中的哪个操作,都会为 API 整体设置单个速率限制阈值。此行为与 IBM API Management V4.0 不同,后者为 API 中的每个操作单独设置速率限制。要将 V2018 的行为更改为模拟 V4.0 行为,请将此 API 属性设置为值 true 布尔
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-map-emulate-v4-default-required-properties 将此属性设置为 true,以便在下列特定情况下,将在输出中为未映射的必需属性或不存在输入数据的必需属性生成缺省值:
  • 数组由包含一个或多个必需属性的对象组成。
  • 可选的对象具有一个或多个必需的子属性。

缺省情况下,输出中不存在这些必需属性。如果将 x-ibm-gateway-map-emulate-v4-default-required-properties API 属性设置为 true,那么这些必需属性将显示在输出中。如果输出模式定义了输出属性的 default 属性,那么将使用指定的缺省值,否则将根据数据类型来分配缺省值,如下所示:

  • 字符串:空字符串 ("")
  • 数字:0
  • 布尔:false
  • 对象:空对象
  • 数组:空数组
示例 1
输入数据具有以下对象数组:
[{“a”: “value1”}, {“a”: “value2", "b": “value3”}]

输出模式将输出对象定义为具有两个属性 ab,其中 b 是必需的。map 策略定义以下映射:

  • input.array.aoutput.array.a
  • input.array.boutput.array.b

如果将 x-ibm-gateway-map-emulate-v4-default-required-properties API 属性设置为 trueb 未映射或者不存在输入数据,那么会为 b 分配空字符串作为缺省值,并且输出如下所示:

[{“a”: “value1", "b": ""}, {"a": "value2", "b": "value3"}]
示例 2
输出模式定义以下结构:
{"a" : {"b" : {"c" : "value1", "d" : "value2"} } }

属性 b 是可选的,但 b 中的属性 d 是必需的。

map 策略将定义到 output.a.b.c 的映射。

如果将 x-ibm-gateway-map-emulate-v4-default-required-properties API 属性设置为 true,并且 d 未映射,那么会为 d 分配空字符串作为缺省值,并且输出如下所示:

{"a" : {"b" : {"c" : "value1", "d" : ""} } }

如果未指定 x-ibm-gateway-map-emulate-v4-default-required-properties API 属性或者值不是 true,那么不会在输出中使用其缺省值来创建这些必需属性。

布尔
仅 DataPower Gateway(与 v5 兼容)用于控制代理策略行为的代理相关 API 属性的列表。
表 3. 用于控制代理策略的属性
属性 必需 描述 数据类型
x-ibm-gateway-proxy-suppress-clientid 设置为 false 会触发将 X-IBM-Client-Id HTTP 头(如果在 API 请求上指定)或请求 URL 中的 client_id 查询参数插入代理 target-url。如果未指定,或者使用值 true 进行设置,那么会禁止将此参数发送到代理 target-url。

此属性仅受 DataPower Gateway(与 v5 兼容) 支持。如果使用的是 DataPower API Gateway,那么,要实现相同的功能,请将 header-control 属性添加到您的 API 的 OpenAPI 定义中的 invoke 策略配置中,如以下示例所示。

禁止 X-Client-ID 头,如下所示:
- proxy:
    target-url: http://myhostname/mypath
    header-control:
        type: blacklist
        values:
            - ^X-Client-ID$
禁止 userId 查询参数,如下所示:
- proxy:
    target-url: http://myhostname/mypath
    parameter-control:
        type: blacklist
        values:
            - ^userId$
布尔
x-ibm-gateway-optimize-invoke 如果设置为 false,那么会阻止将策略中最后一个调用替换为代理。在网关中执行 API 时,非 false 的任何其他值(不区分大小写)可能会导致将策略中最后一个调用替换为代理。 布尔
x-ibm-gateway-queryparam-encode-plus-char 如果设置为值 true,那么调用和代理策略的目标 URL 的查询参数值中的所有“+”字符都将编码为“%2F”。

缺省值为 false

布尔
x-ibm-gateway-api-enforce-response-limits 如果设置为值 true,那么将允许对响应规则实施 JSON 解析器。如果响应主体大小大于在 DataPower 域中设置的 JSON 解析器限制,那么将返回状态码 500。 布尔
用于控制多项策略的行为的 API 属性的列表。
表 4. 用于控制多项策略的属性
属性 必需 描述 数据类型
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-sourcecode-resolve-apic-variables 如果设置为 true,那么将对 API Connect 变量引用进行解析。如果希望策略忽略 API Connect 变量引用,请将其设置为 false

缺省值为 true

此属性适用于以下策略:
  • Map
  • GatewayScript
  • XSLT
  • if
  • switch
注: Map 策略的 x-ibm-gateway-map-resolve-apic-variables API 属性设置将覆盖此属性设置。
布尔
用于控制定制策略的行为的 API 属性的列表。
表 5. 用于控制定制策略的属性
属性 必需 描述 数据类型
仅 DataPower Gateway(与 v5 兼容)x-ibm-gateway-custom-policy-with-gws-action 如果设置为 true,那么将填充 request.bodymessage.body 上下文变量以供定制策略的 GatewayScript 操作中的 apim.getvariable('request.body')apim.getvariable('message.body') 函数调用对其进行访问。如果定制策略不使用需要填充这些变量的 GatewayScript 操作,请将此属性设置为 false,或者不指定此属性。

缺省值为 false

布尔
时间戳记图标 上次更新时间:2019-06-21