Body 映射模板中引用后的点(AWS API 网关)

Dot after Reference in Body Mapping Template (AWS API Gateway)

是否可以在 API 网关的 Body 映射模板中的引用后直接使用点?

我像这样进行字符串连接:

#set($region = "us-east-2")
#set($apiid = "$context.apiId")
#set($stage = "$context.stage")
#set($path = "search/stac")

"url": "https://$apiid.execute-api.$region.amazonaws.com/$stage/$path"

问题是 $apiid 和 $region 没有被取消引用。结果看起来像这样。

"url: "https:// .execute-api. .amazonaws.com/dev/search/stac

如果我使用没有字符串连接的引用,它们具有预期的值。所以#set操作似乎是正确的。

我假设它把引用后面的点误认为是函数调用。 如何转义 Velocity 模板语言中的点?

可以使用curly braces来标记变量的开始和结束:

"url": "https://${apiid}.execute-api.${region}.amazonaws.com/$stage/$path"

If you need to explicitly separate a Velocity directive from surrounding text, it is possible to wrap it in curly braces ({ and }):