You need to enable JavaScript to run this app.
文档中心
AgentKit

AgentKit

复制全文
下载 pdf
附录
函数服务开发规范
复制全文
下载 pdf
函数服务开发规范
使用专属网关自定义服务扩展插件时,您需要自行开发并部署函数服务。函数服务需遵循以下协议规范,否则结果将被视为不合法,并根据“失败时放行”的配置返回 500 错误或跳过该插件继续处理请求。​
请求结构​
网关在调用函数服务时,会向函数发送如下结构的请求体:​
​
{​
"request": {​
"headers": <xxx>, // 请求头​
"body": <xxx> // 请求体,Base64 编码,仅当「是否传递 Body」开启时存在​
},​
"response": { // 仅响应阶段的请求存在​
"headers": <xxx>​
"body": <xxx> // 响应体,Base64 编码,仅当「是否传递 Body」开启时存在​
},​
"properties": Record // 上下文属性,包含 requestId、consumerName(OAuth JWT 场景下对应用户 ID)、resourceId(MCP 服务 ID 等)​
}​
​
示例​
以下示例表示网关在请求阶段调用函数服务。示例中,请求体body使用 Base64 编码,解码后为{"query":"hello"}。​
​
{​
"request": {​
"headers": {​
"accept":[​
"application/json",​
"application/x-www-form-urlencoded"​
], ​
"content-type": "application/json"​
},​
"body": "eyJxdWVyeSI6ImhlbGxv****"​
},​
"properties": {​
"requestId": "550e8400-e29b-41d4-a716-44665544****",​
"consumerName": "6fa459ea-ee8a-3ca4-894e-db77e160****",​
"resourceId": "m-yeujh184xs64rmgq****"​
}​
}​
​
响应结构​
函数服务处理完成后,需返回如下结构的响应体:​
​
{​
"request": {​
"headers": <xxx>, // 差分修改请求头,仅请求阶段有效​
"body": <xxx> // 修改后的请求体,Base64 编码​
},​
"response": {​
"headers": <xxx>, // 差分修改响应头​
"body": <xxx> // 修改后的响应体,Base64 编码​
}​
}​
​
示例​
以下示例表示函数服务要求网关修改响应头,并将响应体替换为新的 JSON 内容。示例中,response.body使用 Base64 编码,解码后为{"message":"handled by function"}。​
​
{​
"response": {​
"headers": {​
"x-function-processed": [​
"true"​
],​
"content-type":"application/json"​
},​
"body": "eyJtZXNzYWdlIjoiaGFuZGxlZCBieSBmdW5jd****"​
}​
}​
​
如果仅需要修改Header,可以只返回 response.headers;如果不需要修改Body,可省略response.body。​
响应规范说明​
合法性要求​
  • 自定义服务扩展响应必须合法,语义和类型正确。​
  • 请求头中:method、:path、:authority字段须符合 HTTP 规范。​
  • 响应头中:status字段须可被解析为 200~599 范围内的整数。​
Headers 差分修改语义​
响应的request.headers和响应的response.headers按差分语义修改标头:​
  • 未提供的标头不做处理。​
  • 标头值为 null 时,删除对应标头。​
  • 标头值为非 null 时,覆写对应标头。​
  • 标头值不允许为空数组。​
Body 修改限制​
  • request.body和response.body均使用 Base64 编码。​
  • 仅当“是否传递 Body”开启且请求体不为空时,请求阶段的自定义服务扩展可修改请求体。​
  • 仅当“是否传递 Body”开启且响应体不为空时,响应阶段的自定义服务扩展可修改响应体。​
请求阶段提前返回​
请求阶段的函数服务可在响应中携带response字段,触发提前中断并直接返回,不再转发至后端服务。此时:​
  • response.headers须携带完整响应头,且必须包含合法的:status。​
  • response.body必须存在且不为空。​
响应阶段忽略request​
响应阶段的响应中若携带request字段,将被忽略。​
最近更新时间:2026.10.26 20:25:54
这个页面对您有帮助吗?
有用
有用
无用
无用