如何在api网关中获取原始请求URI



从lambda实现的api网关资源,如何获得原始请求URI。或者只是原来的路径?

由于缺乏更好的方法,我目前使用以下三个变量,我使用默认的请求模板传递给lambda:

$context.resourcePath   contains the path with variable names   ex: "/blah/{var}"
$input.params().path    contains the variable names and values  ex: {"var":"something"}
$context.stage          contains the stage                      ex: "prod"

这很麻烦,因为它需要路径变量替换来获得原始调用路径:

/prod/blah/something

如何获得原始URL或URI?

我在文档中没有找到任何可以让您获得原始调用URI的内容。我可以添加一个功能请求来考虑添加它。你能描述一下你的用例吗?为什么要获取原始URI?

我找到了一个"变通办法"。

如果您使用BasePathMapping创建自定义域名,并使用此自定义域调用API,原始请求uri实际上在那里有您的舞台名称:

直接调用API网关:

curl -v 'https://some-id.execute-api.eu-central-1.amazonaws.com/v1/ping'
...
request.url: https://some-id.execute-api.eu-central-1.amazonaws.com/ping'

但是如果我们通过自定义域调用它(实际上是一个cloudfront分布):

curl -v -X GET https://api.our.domain.name.com/v1/ping
...
request.url: https://api.our.domain.name.com/v1/ping

在我看来,直接调用在lambda函数中给你一个不正确的请求url,因为url非常清楚地在那里有舞台名称。

这会破坏至少flask的路由中间件。

功能请求有更新吗?

相关内容

  • 没有找到相关文章

最新更新