Ali*_*Ali 3 templates vtl amazon-web-services aws-lambda aws-api-gateway
我正在为 AWS API 网关创建请求映射模板。在该模板中,我想根据某些条件自定义请求参数并应用运算符。
#foreach($header in $input.params().header.keySet())
#if($header=="id")#set($idVal =
$util.escapeJavaScript($input.params().header.get($header)))
#if($idVal.matches("^[0-9a-f]{4}-[0-9A-Z]{3}$"))
"$header":"$idVal"
#else
#set($random = UUID.randomUUID())
"$header":"$random"
#end
#else
Run Code Online (Sandbox Code Playgroud)
例如,在上面基于 if 条件的模板中,我想生成 randomUUID 并添加到标题中。但是当我测试时,id 值设置为空字符串。
如何在速度模板映射 api 网关中使用包和 java 函数支持?另外,请分享对格式良好的模板的任何参考,了解更多信息会非常有用。
API Gateway 中使用的 VTL 不能使用您自己的包进行扩展。只能使用内置变量和$util
函数。
您可能会发现它$context.requestId
包含一个适合您的用途的 UUID,对于每个请求都是唯一的。请注意,如果您使用的是 Lambda 集成,则此值与 Lambda 的值不同,context.requestId
后者只是巧合地具有相同的名称。
或者,最右边的 33 个字符$context.xrayTraceId
应该包含一个 4 字节的时间戳(8 个十六进制数字)+ '-' + 一个 96 位唯一值(24 个十六进制数字),您可以从中构造一个可用的 UUID,并使用一些轻量字符串操作。
归档时间: |
|
查看次数: |
2910 次 |
最近记录: |