当前位置: 首页 > 知识库问答 >
问题:

带有请求-promise的AWS Lambda

郑光济
2023-03-14
exports.handler = async (event, context, callback) => {
    console.log("Starting call: " + event.queryStringParameters.filter);
    console.log("Decoded param: " + decodeURIComponent(event.queryStringParameters.filter));
    var filter = JSON.parse(decodeURIComponent(event.queryStringParameters.filter));
    console.log("Filter: " + filter);
    var ingredients = filter.ingredients;
    var options = {
        uri: 'https://api.*****.com/search',
        qs: {
            app_id: '****',
            app_key: '*****',
            q: ingredients.join(' ')
        },
        json: true
    };
    console.log("Done calling stuff");

    rp(options)
        .then(function(recipes) {
            console.log('Response: ' + recipes);
            var recipesToReturn = [];

            recipes.hits.forEach(function(recipeHit) {
                recipesToReturn.push(objectMapper(recipeHit.recipe, recipeMap));
            });
            console.log('Recipes:', recipesToReturn);
            const response = {
                statusCode: 200,
                body: JSON.stringify(recipesToReturn),
            };
            return JSON.stringify(response);
        })
        .catch(function(err) {
            console.log('Error:', err)
            const response = {
            statusCode: 400,
            body: err,
            };
            return JSON.stringify(response);
        });
};

Sun 5月26日16:59:21 UTC 2019:由于配置错误执行失败:格式错误的Lambda代理响应

我一直试图阅读Lambda代理响应应该如何格式化,我假设我遗漏了一些与回调或上下文有关的内容,但我一直无法弄清楚如何使它与请求-promise库一起工作。

共有1个答案

陈斌蔚
2023-03-14

在代理集成中,API网关只是在前端和后端之间传递整个请求和响应。

这是发送到API网关的response lambda函数的问题。

对lambda的响应应该具有以下键值

{
    "isBase64Encoded": true|false,
    "statusCode": httpStatusCode,
    "headers": { "headerName": "headerValue", ... },
    "body": "..."
}
const response = {
                statusCode: 200,
                isBase64Encoded: false
                headers:""
                body: JSON.stringify(recipesToReturn),
            };
 类似资料:
  • 问题内容: 我尝试了python 请求库文档中提供的示例。 使用,我得到了响应代码,但是我想获得所请求的每个页面的内容。例如,这不起作用: 问题答案: 注意 下面的答案是不适用于请求v0.13.0 +。编写此问题后,异步功能已移至。但是,你可以将其替换为下面的内容,它应该可以工作。 我已经留下了这个答案,以反映原始问题,即有关使用请求的问题。 要异步执行多个任务,你必须: 为每个对象定义一个函数(

  • 问题内容: 将请求正文与GET请求一起传递是否违反REST风格? 例如在Elasticsearch中过滤一些信息 甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员) 问题答案: 从RFC: GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。 换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随

  • 我在: > http://developer.yahoo.com/blogs/ydn/important-api-updates-changes-8060.html http://developer.yahoo.com/boss/search/ http://tech.groups.yahoo.com/group/ysearchboss/msearch?query=http要求 http://de

  • 问题内容: 在swift 3中建议使用带参数的GET的哪种方法? 范例: 提前致谢 ! 问题答案: 示例如何使用请求。

  • 问题内容: 如何使用与以下代码等效的node.js发出Http请求: 问题答案: 使用http客户端。 遵循以下原则:

  • 问题内容: 我有这个小网站,我想用请求库填写表格。问题是当填写表单数据并单击按钮时,我无法到达下一个站点(输入不起作用)。 重要的是,我无法通过某种类型的点击漫游器来做到这一点。这需要完成,这样我才能在没有图形的情况下运行。 前三个条目的名称,消息,符号是文本区域,步骤是我认为的按钮。 当我通过chrome手动发送请求时,表单数据如下所示: 姓名:约翰·约翰 讯息:XXX 签名:XXX 第1步 b