2016-07-15 4 views
2

Я хочу вернуть значение из обработчика в заголовок ответа шлюза API.Отображение шлюза Lambda и API

Handler.js

module.exports.handler = function(event, context, cb) { 
    const UpdateDate = new Date(); 
    return cb(null, { 
    body: { 
     message: 'test' 
    }, 
    header: { 
     Last-Modified: UpdateDate 
    } 
    }); 
}; 

s-function.json в "конечных точек"

"responses": { 
    "400": { 
     "statusCode": "400" 
    }, 
    "default": { 
     "statusCode": "200", 
     "responseParameters": { 
     "method.response.header.Cache-Control": "'public, max-age=86400'", 
     "method.response.header.Last-Modified": "integration.response.body.header.Last-Modified" 
     }, 
     "responseModels": { 
     "application/json;charset=UTF-8": "Empty" 
     }, 
     "responseTemplates": { 
     "application/json;charset=UTF-8": "$input.json('$.body')" 
     } 
    } 
    } 

Это может работать. Но я хочу знать, как использовать «integration.response.header.Last-Modified». Является ли неправильный обратный вызов обработчика?

Edit: s-function.json в "конечных точек"

"integration.response.header.Last-Modified" Это не работает. Я хочу знать конкретный обработчик return formate для передачи данных в "integration.response.header.Last-Modified".

"responses": { 
    "400": { 
     "statusCode": "400" 
    }, 
    "default": { 
     "statusCode": "200", 
     "responseParameters": { 
     "method.response.header.Cache-Control": "'public, max-age=86400'", 
     "method.response.header.Last-Modified": "integration.response.header.Last-Modified" 
     }, 
     "responseModels": { 
     "application/json;charset=UTF-8": "Empty" 
     }, 
     "responseTemplates": { 
     "application/json;charset=UTF-8": "$input.json('$.body')" 
     } 
    } 
    } 
+0

Это выглядит правильно на первый взгляд, но я не понимаю ваш вопрос. Вы говорите, что это не работает? Если нет, то какое поведение вы видите? –

+1

Я хочу использовать «integration.response.header.Last-Modified», и я не знаю, как формировать форму возврата лямбда. – Jim

ответ

0

Все выход из вашего лямбда-функции возвращается в теле ответа, так что вам нужно будет отобразить часть тела ответа на ваш заголовок ответа API.

module.exports.handler = function(event, context, cb) { 
    const UpdateDate = new Date(); 
    return cb(null, { 
     message: 'test', 
     Last-Modified: UpdateDate 
    }); 
}; 

будет производить полезную нагрузку "{" сообщение ": "тест", "Last-Modified":" ... "}"

В этом случае вы должны использовать «integration.response.body. Last-Modified "как отображающее выражение. Как побочная заметка, именование вещей «тело» и «заголовок» в вашем теле ответа может привести к неправильному отображению выражений сопоставления.

Спасибо, Райан

+0

Спасибо! Это очень помогает мне. – Jim

Смежные вопросы