【问题标题】:How to map my response properly in AWS API Gateway如何在 AWS API Gateway 中正确映射我的响应
【发布时间】:2017-05-18 20:00:37
【问题描述】:

我在 AWS API Gateway 中创建了一个调用 Lambda 函数的 API。这是我用来返回应用程序/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”标头。错误。只需在标题中添加'Access-Control-Allow-Origin': '*'Content-Type

干杯!

【问题讨论】:

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


    【解决方案1】:

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

    模型模式仅在您计划为您的 API 使用 generate SDKs 时才需要为您的 API 的输入/输出建模(目前支持 Java、iOS、Android、Javascript)

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

    API Gateway 中的

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

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

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

    【讨论】:

    • 您说得对,我需要使用 Lambda 代理集成才能使此响应正常工作,因为我不会转换任何响应。我将自己发送响应(包括状态码、正文、标题)。我只需要使用没有任何模型模式的 Lambda 代理集成。谢谢!
    猜你喜欢
    • 2019-11-07
    • 2018-05-02
    • 2018-04-15
    • 2016-12-15
    • 2020-04-18
    • 2020-03-24
    • 2017-11-30
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多