如何在 AWS API 网关中正确映射我的响应

How to map my response properly in AWS API Gateway

我在 AWS API 网关中创建了一个 API 调用 Lambda 函数。这是我用来 return application/json 响应的代码,几乎类似于 Python Lambda 蓝图:

def response(status_code, response_body=None):
    return {
        'statusCode': status_code,
        'body': json.dumps(response_body) if response_body else json.dumps({}),
        'headers': {
            'Content-Type': 'application/json',
        },
    }

目前我只有一个 HTTP 状态代码 200。我很难为此响应制作模型架构。

如何从此响应中获取 body 并将其正确显示给消费者?


编辑: 我需要 create my API with Lambda Proxy Integration,因为我在这里 return 处理 Lambda 的响应,根本没有转换它。此外,这里不需要模型模式。有关详细信息,请阅读已接受的答案。

注意: 为避免 No 'Access-Control-Allow-Origin' header is present on the requested resource. 错误。只需在 header 中添加 'Access-Control-Allow-Origin': '*' 以及 Content-Type

干杯!

只是为了确保我们在同一页面上使用 API 网关术语:

模型模式 只需要为 API 的 input/output 建模,如果您打算 generate SDKs 为您的 API(目前支持Java、iOS、Android、Java脚本)

映射模板 可用于将方法请求的输入转换为集成请求,并将集成响应的输出转换为最终方法响应。

API 网关中的代理资源 类型允许您proxy/pass-through 方法请求到您的集成和集成响应到方法响应,而无需处理映射模板,如果你不需要做任何转换。

除非您明确需要在 API 网关层转换您的 Lambda 输出,否则我建议您查看代理资源类型,它连同 ANY 方法和贪婪路径变量应该只是您的 API 最简单 pass-through/proxy 用例的网关配置。

https://aws.amazon.com/blogs/aws/api-gateway-update-new-features-simplify-api-development/