ParsePayload 政策

标准政策

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

ParsePayload 政策将结构化请求载荷(例如 JSON-RPC 2.0)中的逻辑运算提取到消息流变量中。借助此功能,代理管理员可以直接根据客户端请求内容(而不是基本资源路径或查询参数)来实现条件路由逻辑。

此政策是一项可扩展政策,使用此政策可能会影响费用或使用情况,具体取决于您的 Apigee 许可。如需了解政策类型和使用情况影响,请参阅政策类型

<ParsePayload> 元素

指定应用于应用逻辑评估周期的验证解析属性。

是否必需? 必需
父元素 不适用
子元素 <Source>
<PayloadType>
<Protocol>

语法

ParsePayload 元素使用以下语法:

<ParsePayload continueOnError="[false|true]" enabled="[true|false]" name="policy_name">
    <Source>request</Source>
    <PayloadType>JSON-RPC-2.0</PayloadType>
    <Protocol>MCP</Protocol>
</ParsePayload>

示例

以下示例展示了 ParsePayload 政策的标准配置:

<ParsePayload continueOnError="false" enabled="true" name="parse-payload-mcp">
    <Source>request</Source>
    <PayloadType>JSON-RPC-2.0</PayloadType>
    <Protocol>MCP</Protocol>
</ParsePayload>

<Source>

表示通过运行时评估立即处理的请求/响应容器上下文。

<Source>request</Source>
属性 说明 默认值 状态
不适用 文本节点值。必须为 requestresponse request 可选

<PayloadType>

管控与数据处理要求相关的公认总体评估结构。

<PayloadType>JSON-RPC-2.0</PayloadType>
属性 说明 默认值 状态
不适用 文本节点值。支持的值:JSON-RPC-2.0 不适用 必需

<Protocol>

确定与目标接口声明完全对应的格式设置行为。

<Protocol>MCP</Protocol>
属性 说明 默认值 状态
不适用 文本节点值。支持的值:MCP 不适用 必需

提取的流变量

解析后例程会根据载荷填充以下预定义的流变量。

变量名称 说明
apigee.payload.operation 构造的执行标识符。
  • 对于 tools/call,它是 tools/call/{name}(例如 tools/call/get_weather),用于区分所调用的具体工具。
  • 对于 tools/list,它是 tools/list,用于列出可用工具而不定位到特定工具时。
apigee.payload.json-rpc.request.method JSON-RPC 请求中的 method 字段(例如 tools/calltools/list)。
apigee.payload.json-rpc.request.id JSON-RPC 请求中的 id 字段。
apigee.payload.json-rpc.request.params.name params 内的 name 字段(针对 tools/call 填充,用于标识工具)。
apigee.payload.json-rpc.request.params.arguments.{arg_name} arguments 对象中传递的实参。字符串值直接存储;嵌套对象或数组存储为序列化的 JSON 字符串。

示例

对于以下包含简单实参的 JSON-RPC 请求载荷:

{
  "jsonrpc": "2.0",
  "id": "req_001",
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "location": "San Francisco, CA",
      "forecast_days": 3
    }
  }
}

该政策会填充以下变量:

变量
apigee.payload.operation tools/call/get_weather
apigee.payload.json-rpc.request.method tools/call
apigee.payload.json-rpc.request.id req_001
apigee.payload.json-rpc.request.params.name get_weather
apigee.payload.json-rpc.request.params.arguments.location San Francisco, CA
apigee.payload.json-rpc.request.params.arguments.forecast_days 3