我正在尝试编写一个Lambda函数,该函数使用request-promise库发出外部https请求。这就是我所拥有的:
import * as express from "express";
import {getConnection} from "typeorm";
import {MasterKategori} from "../entity/MasterKategori";
class HomeController {
public home = async (request: express.Request, response: express.Response) => {
const kategoriData = await getConnection().getRepository(MasterKategori).find();
const kategori = Object.entries(kategoriData);
console.log(kategori);
response.render("page", {kat: kategori});
}
}
export default new HomeController();
当我测试API网关请求时,看到以下内容:
Sun May 26 16:59:21 UTC 2019:由于配置错误,执行失败:Lambda代理响应格式错误
我一直在尝试阅读应如何设置Lambda代理响应的格式,并且我假设我在回调或上下文方面缺少一些东西,但我一直无法弄清楚如何使其与请求承诺库一起使用。
答案 0 :(得分:1)
在代理集成API中,网关仅在前端和后端之间传递整个请求和响应。
这是发送到API网关的响应lambda函数的问题。
对lambda的响应应具有以下键值
{
"isBase64Encoded": true|false,
"statusCode": httpStatusCode,
"headers": { "headerName": "headerValue", ... },
"body": "..."
}
isBase64Encoded :如果您不使用二进制数据,请将其设置为false。
statusCode :是API网关解释的HTTP响应。
body :如果要发送JSON,则必须将其转换为字符串。在node.js中,您可以使用JSON.stringify()方法。
以下可能是对API网关的正确响应
const response = {
statusCode: 200,
isBase64Encoded: false
headers:""
body: JSON.stringify(recipesToReturn),
};