繁体   English   中英

API Gateway Lambda 端点代理与非代理集成

[英]API Gateway Lambda endpoint proxy vs non-proxy integration

我已经构建了 100 多个 API 和 Lambda,从来没有经历过这样的讨论。

我总是使用代理集成并使用它解析我的代码中的参数

x = event['queryStringParameters']
ID   = x.get("param1")
name = x.get("param2")

然而,前端工程师认为我们应该遵循推荐的命名约定,并将参数作为路径参数传递给我们的 API,与此链接中的路径参数相同https://restfulapi.net/resource-naming/经过一番研究,我发现这基本上是非代理集成,我应该在 API GW 中配置参数。 我在许多博客中读到这不是推荐的方式。 但我找不到明确更喜欢代理集成的明确 AWS 文档。

代理(路径参数): http://api.example.com/device-management/managed-devices/{id} : http://api.example.com/device-management/managed-devices/{id}

非代理(查询字符串参数): http://api.example.com/device-management/managed-devices?param1={id} : http://api.example.com/device-management/managed-devices?param1={id} param1 http://api.example.com/device-management/managed-devices?param1={id}

我一直试图说服他,我没有看到它在任何地方使用,并且 API 的 URL 用于应用程序代码中,那么为什么 API url 的外观很重要?!

请,我需要你的意见。 告诉我你的想法?

Lambda 代理集成将请求直接从客户端发送到 lambda 函数,无需任何修改。 它直接将一个 URL 映射到一个 lambda 函数。 因此,无法在此设置中使用路径参数。 . 更新:可以使用 URL 中的{path}段来使用路径参数,如本 AWS 文档中所述

Lambda 集成可以在将请求发送到 Lambda 函数之前修改请求,也可以在将请求发送到客户端之前修改来自同一函数的响应。 借助 Lambda 集成,API 设计人员可以更好地控制 API,而不是将 API 定义埋入代码中。 从 API Gateway Velocity Template Language (VTL) 生成 swagger API 规范很容易。

建议将 Lambda 代理集成用于快速原型设计,但建议将 Lambda 集成用于成熟的 REST API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM