触发器输出绑定

invoke-dapr-binding 策略指示 API 管理网关触发出站 Dapr 绑定。 策略通过向 http://localhost:3500/v1.0/bindings/{{bind-name}}, 发出 HTTP POST 请求、替换模板参数并添加策略语句中指定的内容来实现这一点。

策略假设 Dapr 运行时正在网关所在的 pod 中的 sidecar 容器中运行。 Dapr 运行时负责调用绑定表示的外部资源。 详细了解 Dapr 与 API 管理的集成

注意

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

策略语句

<invoke-dapr-binding name="bind-name" operation="op-name" ignore-error="false | true" response-variable-name="resp-var-name" timeout="in seconds" template="Liquid" content-type="application/json">
    <metadata>
        <item key="item-name"><!-- item-value --></item>
    </metadata>
    <data>
        <!-- message content -->
    </data>
</invoke-dapr-binding>

属性

属性 说明 需要 默认
name 目标绑定名称。 必须与 Dapr 中的已定义的绑定名称匹配。 允许使用策略表达式。 不适用
operation 目标操作名称(特定于绑定)。 映射到 Dapr 中的操作属性。 不允许使用策略表达式。
ignore-error 如果设置为 true,则指示策略在收到来自 Dapr 运行时的错误时不触发“on error”部分。 不允许使用策略表达式。 false
response-variable-name 用于存储来自 Dapr 运行时的响应的变量集合项的名称。 不允许使用策略表达式。
timeout 等待 Dapr 运行时做出响应的时间(以秒为单位)。 范围为 1 到 240 秒。 允许使用策略表达式。 5
template 用于转换消息内容的模板引擎。 “Liquid”是唯一支持的值。
content-type 消息内容的类型。 “application/json”是唯一支持的值。

元素

元素 说明 必须
metadata 以键/值对的形式绑定特定的元数据。 映射到 Dapr 中的元数据属性。
数据 消息的内容。 映射到 Dapr 中的数据属性。 允许使用策略表达式。

使用情况

使用注意事项

必须在自承载网关中启用 Dapr 支持。

示例

下面的示例演示了如何触发名为“external-systems”的出站绑定,其操作名为“create”,元数据由两个名为“source”和“client-ip”的键/值项组成,并且主体来自原始请求。 从 Dapr 运行时接收到的响应在 context 对象的“变量”集合的“bind-response”项中捕获。

如果 Dapr 运行时由于某种原因而失败并返回错误,则会触发“on-error”部分,并且从 Dapr 运行时收到的响应会逐字返回给调用方。 否则,返回默认的 200 OK 响应。

“backend”部分为空,请求不会转发到后端。

<policies>
     <inbound>
        <base />
        <invoke-dapr-binding
                      name="external-system"
                      operation="create"
                      response-variable-name="bind-response">
            <metadata>
                <item key="source">api-management</item>
                <item key="client-ip">@(context.Request.IpAddress )</item>
            </metadata>
            <data>
                @(context.Request.Body.As<string>() )
            </data>
        </invoke-dapr-binding>
    </inbound>
    <backend>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <return-response response-variable-name="bind-response" />
    </on-error>
</policies>

后续步骤

有关使用策略的详细信息,请参阅: