重写api网关集成请求中的目标路径

Ben*_*iel 9 amazon-web-services aws-api-gateway

假设我在 API Gateway 中有一个类似 /foo/{bar} 的资源。我想通过集成请求模板将请求路径转换为 ​​/bing/baz/{bar} 。

\n\n

通过以下方式将“bar”设置到请求正文中非常简单:

\n\n
{ "bar": "$inputs.params(\'bar\')" }\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何在请求时重写目标路径?

\n\n

解决方案在“请求响应示例”中有所暗示:

\n\n

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

\n\n

但文档没有准确概述“使用输入模板:”的功能。

\n\n
Resource: /things/{id}\n\nWith input template:\n{\n    "id" : "$input.params(\'id\')",\n    "count" : "$input.path(\xe2\x80\x98$.things\').size()",\n    "things" : $input.json(\xe2\x80\x98$.things\')\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Jac*_*AWS 6

您可能正在寻找映射模板变量“$context.resourcePath”,它将为您提供发出请求的资源路径。

编辑:

您可以在 HTTP 集成中的 URI 字段中使用路径参数,这允许您将正文中的参数或字段动态映射到目标路径。语法与资源相同,因此参数周围有大括号,如“ http://myapi.com/foo/bar/ }”。

然后您将能够为“baz”指定映射表达式。

  • 你能提供一个具体的例子吗?我还是有点失落。很高兴听到这是可能的! (2认同)