python - 如何在 AWS API Gateway 中正确映射我的响应

标签 python amazon-web-services aws-lambda aws-api-gateway

我在 AWS API Gateway 中制作了一个调用 Lambda 函数的 API。这是我用来返回 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。我很难为这个响应制作模型架构。

我如何从这个响应中获取正文并将其正确显示给消费者?


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

注意:为避免请求的资源上不存在“Access-Control-Allow-Origin” header 。错误。只需在 header 中添加 'Access-Control-Allow-Origin': '*' 以及 Content-Type

干杯!

最佳答案

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

如果您计划 generate SDKs

模型模式 只需要为 API 的输入/输出建模适用于您的 API(目前支持 Java、iOS、Android、Javascript)

映射模板 是您可以用来将方法请求的输入转换为集成请求以及将集成响应的输出转换为 final方法响应的模板。

API Gateway 中的

代理资源 类型允许您将方法请求代理/传递到您的集成和集成响应中,而无需处理映射模板(如果您不这样做)不需要进行任何转换。

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

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

关于python - 如何在 AWS API Gateway 中正确映射我的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41465339/

相关文章:

javascript - AWS lambda : How to Add Numbers to a NS Set in Dynamodb

python - 任务完成时间比预期要长得多

Python - 加速度计以 1 kHz 速率读取和写入 CSV 文件

javascript - 在 Flask 中操作和显示用户上传的图像

javascript - 将数据结构从 Python 移植到 JS

amazon-web-services - AWS Elastic BeanStalk Docker 根文件系统切换为只读

Android Amazon S3 上传崩溃

mysql - 授予对 RDS 只读副本的权限

amazon-web-services - 如何使用cloudformation模板创建cloudwatch事件?

amazon-web-services - AWS Transfer 系列中从不要求 AWS Lambda 进行身份验证