【问题标题】:API Gateway Lambda endpoint proxy vs non-proxy integrationAPI Gateway Lambda 端点代理与非代理集成
【发布时间】:2021-09-11 06:53:24
【问题描述】:

我已经构建了 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?param1={id}

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

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

【问题讨论】:

  • 您指的代理集成到底是什么?我能找到的大部分讨论都是围绕与 Lambda 的“API 网关代理集成”。但是,您似乎指的是 {proxy+} 路径映射?
  • @qkhanhpro 是的,我的意思是 API 网关代理集成。因为这是我可以配置参数作为路径参数发送的方式

标签: api aws-lambda parameter-passing aws-api-gateway url-parameters


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的好评。这是您的个人意见还是 AWS 的建议?如果是这样,你能把文档链接分享给我吗?
  • 嗨@Data_sniffer,抱歉。我指的是旧的 Lamda 代理集成。现在您可以将路径参数与代理集成一起使用。无需仅针对路径参数进行非代理集成。
猜你喜欢
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-08-03
  • 2018-01-23
  • 2017-07-17
  • 2018-11-13
  • 1970-01-01
  • 2018-05-04
相关资源
最近更新 更多