数据操作的 URI (URL) 形式编码
注意: 本文适用于 Genesys Cloud、Google、Microsoft Dynamics 365、Salesforce、Web 服务和 Zendesk 数据操作集成。
某些 API,尤其是登录 API,需要对 HTTP 请求进行 URL 形式编码。 要配置 URI 编码的 Genesys Cloud 数据操作:
-
创建一个值为
x-www-form-urlencoded 的
。内容类型
请求标头 -
在用户界面中设置请求正文模板,或者在 JSON 或 Terraform
中设置
请求模板,参数为键值对,由 & 符号 (&) 分隔。 例如,key1=value1&key2=value2
。注意: 请求正文不是 JSON,它是一个格式化为 URL 查询参数的字符串。 -
使用
$esc.uriEncode()
包含任何 URL 保留字符的值或变量,例如 / ? :@-。 _! ~ $ & ' ( ) * + , ; =。
json 示例
"config": { "request": { "requestTemplate": "grant_type=client_credentials&scope=customers_read_write&audience=$esc.uriEncode(\"https://api.example.com/v1/customers\")", "headers": { "Authentication": "Basic $encoding.base64(\"${credentials.clientid}:${credentials.clientSecret}\"", "Content-Type": "application/x-www-form-urlencoded" }, "requestType": "POST", "requestUrlTemplate": "${credentials.loginUrl}" } }
以下示例显示了具有保留字符的用户输入值:
"config": { "request": { "headers": { "Content-Type": "application/x-www-form-urlencoded" }, "requestUrlTemplate": "https://api.example.com/v1/customers", "requestTemplate": "description=$esc.uriEncode(\"${input.DESCRIPTION}\")&email=$esc.uriEncode(\"${input.EMAIL}\")", "requestType": "POST" } }
注意: 为了防止注入攻击,请始终使用
$esc.uriEncode()
功能与用户输入。 由于数据操作无法使用特殊字符自动转义用户输入,因此出于安全目的,您必须在适用的情况下使用该函数。 尽管数据来自被调用的实体(包括 Architect 或 Script),但在处理 URL 和 URL 表单时必须进行转义。 有关集成的更多信息,请参阅 关于数据操作集成。