Преобразование шаблона скорости в шлюз API для передачи в машинописи с AWS CDK - PullRequest
0 голосов
/ 17 января 2020

Я использую машинопись с 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 ]

0 голосов
/ 26 февраля 2020

В 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 другим языкам

0 голосов
/ 20 января 2020

Ваш вопрос на самом деле: «Как определить длинную строку, не беспокоясь о экранировании специальных символов в 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
    ] 
}`
...