Преобразование шаблона скорости в шлюз API для передачи в машинописном тексте с помощью AWS CDK
Я использую машинописный текст с AWS CDK для создания шаблона cloudFormation для шлюза api. У меня есть шаблон Apache Velocity, который помогает мне преобразовать мой ответ. Пока я создаю шлюз API с помощью машинописного текста. Как передать шаблон из самого кода. Мне нужно передать мой шаблон в responseTemplates в интерфейсе IntegrationOptions, который ожидает строку. Мне не удалось найти разумного способа преобразовать его в строку.
{
"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
]
}
2 ответа
Ваш вопрос действительно таков: "Как мне определить длинную строку, не беспокоясь об экранировании специальных символов в 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
]
}`
В java
, очень просто:
private GraphQLApi CreateGraphQLApi(String API_NAME) {
return GraphQLApi.Builder.create(this, API_NAME + "_AppSyncApi")
.name(API_NAME.concat("_AppSyncApi"))
.schemaDefinitionFile(Constants.SCHEMA_PATH)
.build();
}
Вы можете передать путь к схеме и позволить cdk
загрузить и развернуть ресурс.
Я думаю, что typescript
API имеет соответствие 1 к 1 с другими языками