如何将JSON数据添加到HTML AWS lambda响应主体?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将JSON数据添加到HTML AWS lambda响应主体?相关的知识,希望对你有一定的参考价值。
我正在建立一个网站遇到一些麻烦。它使用AWS lambda函数。我正在AWS CodeStar上构建和部署。
该站点剥离URL参数(例如/ BTC),将其发送到外部API端点,后者返回一些JSON数据。我可以使用body: JSON.stringify(response)
显示整个JSON响应,所以它肯定来自API。但是,我希望在发送回客户端之前将JSON值转换为html标记。然而,当我做像var html = '<h1>JSON.stringify(response['DISPLAY']['BTC']['USD']['MARKET'])</h1>';
这样的事情。我收到内部服务器错误 - 格式错误的请求。
我无法弄清楚这一点。我对AWS的世界相当新,所以可能会忽略一些东西,我在文档中四处查看,似乎无法找到与此相关的任何内容。
此外,当我在网页上显示JSON.stringify
输出时。如果我在浏览器控制台中重新解析它,response['DISPLAY']['BTC']['USD']['MARKET']
返回一个值 - 所以我很确定有效载荷数据的语法是正确的。
exports.get = function(event, context) {
var ticker = event.pathParameters.currency;
rp(`https://min-api.cryptocompare.com/data/pricemultifull?fsyms=${ticker}&tsyms=USD`)
.then(function (response) {
var html = `<h1>${JSON.stringify(response['DISPLAY']['BTC']['USD']['MARKET'])}</h1>`;
context.succeed({
statusCode: 200,
body: html,
headers: {'Content-Type': 'text/html'}
});
})
.catch(function (err) {
console.log('error: ', err);
});
};
任何帮助,将不胜感激!如果需要,很高兴提供更多信息。
据我所知,这是由几件事组合引起的:
- 在你的
.catch
街区,你没有打电话给context.error
。换句话说,如果lambda函数中存在错误,则lambda函数从不表示它已完成对调用者的正确执行。 API网关绝望地抛出手并吐出502
错误。 response
是一个字符串,因此当您尝试访问其属性时,会导致异常并最终出现在.catch
块中。首先你需要JSON.parse(response)
这是一个有用的注释:无论何时调用console.log
,都可以在CloudWatch > Logs > /aws/lambda/<your-lambda-name>
中找到日志输出。这对于弄清楚事情的原因/地点有用。
以上是关于如何将JSON数据添加到HTML AWS lambda响应主体?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SUPER 列添加到现有 AWS Redshift 表?
尝试将元数据添加到对象时,AWS S3 管道中的“无效 JSON”