typescript - 将 API 网关中的速度模板转换为使用 AWS CDK 在 typescript 中传递
问题描述
我正在使用带有 AWS CDK 的 typescript 为 api 网关生成 cloudFormation 模板。我有一个 Apache Velocity 模板,可以帮助我转换我的响应。当我使用打字稿创建 API 网关时。如何从代码本身传递模板。我需要在需要字符串的 IntegrationOptions 接口中的 responseTemplates 中传递我的模板。我一直无法找到任何合理的方法将其转换为字符串。
{
"sellableQuantity": $inputRoot.quantity),
"reservedQuantity": $inputRoot.reservedQuantity)
"marketplaceInventories": [
#foreach( $marketplaceInventory in $inputRoot.marketplaceInventories) )
{
"sellableQuantity": $marketplaceInventory.sellableQuantity,
"marketplaceAttributes": {
#set( $marketplaceAttributes = $marketplaceInventory.marketplaceAttributes )
"marketplaceName": "$marketplaceAttributes.marketplaceName",
"channelName": "$marketplaceAttributes.channelName"
}
}
#if( $foreach.hasNext ) , #end
#end
]
}
解决方案
你的问题真的是“我如何定义一个长字符串而不用担心在 javascript 中转义特殊字符?”
我认为javascript 模板文字是最好的选择,因为它可以让您不必担心转义或行继续。在您的字符串周围使用反引号,String.raw
您可以确保您定义的内容将逐字传递:
let myVelocityTemplate = String.raw`{
"sellableQuantity": $inputRoot.quantity),
"reservedQuantity": $inputRoot.reservedQuantity)
"marketplaceInventories": [
#foreach( $marketplaceInventory in $inputRoot.marketplaceInventories) )
{
"sellableQuantity": $marketplaceInventory.sellableQuantity,
"marketplaceAttributes": {
#set( $marketplaceAttributes = $marketplaceInventory.marketplaceAttributes )
"marketplaceName": "$marketplaceAttributes.marketplaceName",
"channelName": "$marketplaceAttributes.channelName"
}
}
#if( $foreach.hasNext ) , #end
#end
]
}`
推荐阅读
- angular - 将 csv 文件加载到数组中,
- c - 我们的练习代码输出了一个意外的 -1,我们不知道为什么
- scala - Scala:如何定义返回子类实例的方法
- python - Pandas Dataframe:限制具有公共子集值的行数
- c++ - 结束自定义对话框的嵌套消息循环
- c# - 按优先级合并约会(开始和结束时间)
- docker - "docker-compose: not found" in Jenkins pipeline. Tried adding path to environment
- r - 计算子组的平均值
- c# - 如何在 ASP.NET Web API 中使用 SharpKML foreach simplefield 和 simpledata?
- cefsharp - 我可以在 CefSharp 中加载第 3 方插件/扩展吗?