AWS API 网关:如何在 HTTP 代理直通集成中 remove/replace 查询字符串参数?
AWS API Gateway: How to remove/replace query string parameter in HTTP Proxy Passthrough integration?
当我使用以下设置将 Invoke URL
查询为 https://xxx.execute-api.yyy.amazonaws.com/test/q?apiKey=AAA
时,我的后端收到一个调用 https://api.mysite.com/q?apiKey=AAA&apiKey=111
:一个 apiKey=AAA
来自客户端,第二个- apiKey=111
来自 Integration Request
配置。
问题:
What/How 我是否应该配置一个 apiKey=AAA
从客户端调用中删除或在集成步骤中替换为 111
值的集成,以便只有一个 apiKey
进入后端?
注:
- 使用代理直通集成,映射模板不可用;
- 这样配置的原因是我的旧后端有大量无法单独配置的端点。
我的设置:
- 我创建了一个新的 REST API。
- 然后我创建了一个名为
proxy
的新 Configure as a Proxy 资源,其资源路径 /{proxy+}
具有以下 ANY
方法设置作为代理集成:
- 集成类型
HTTP Proxy
- 端点URL:
https://api.mysite.com/{proxy}
- 内容处理:
Passthrough
- 作为下一步,我通过向
URL Query String Parameters
部分添加一个新的查询字符串为我的 /{proxy+} - ANY
配置了一个 Integration Request
:
- 姓名:
myApiKey
- 映射自:
'111'
- 然后我点击
Deploy API
到 test
阶段并得到 Invoke URL
,比方说:https://xxx.execute-api.yyy.amazonaws.com/test
.
即使使用代理集成,我们仍然可以覆盖请求和响应。
Here 是博客。让我试着总结一下。
- 确保未选中
Use Proxy Integration
- 映射模板中用于替换
apiKey
查询参数的简单 VTL 模板。
#set($newApiKey = "abcd")
$input.json("$")
#set($context.requestOverride.querystring.apiKey = $newApiKey)
- 添加方法响应示例响应代码 200、400 和 500。
- 为每个响应代码的每个状态代码添加集成响应,例如具有传递行为的 2xx
2\d{2}
的 http 状态。
假设我们有一个 proxy
路径 /someapi/sompath
设置。以上模板会将 /someapi/sompath?apiKey=100
替换为 {proxy}?apiKey=abcd
当我使用以下设置将 Invoke URL
查询为 https://xxx.execute-api.yyy.amazonaws.com/test/q?apiKey=AAA
时,我的后端收到一个调用 https://api.mysite.com/q?apiKey=AAA&apiKey=111
:一个 apiKey=AAA
来自客户端,第二个- apiKey=111
来自 Integration Request
配置。
问题:
What/How 我是否应该配置一个 apiKey=AAA
从客户端调用中删除或在集成步骤中替换为 111
值的集成,以便只有一个 apiKey
进入后端?
注:
- 使用代理直通集成,映射模板不可用;
- 这样配置的原因是我的旧后端有大量无法单独配置的端点。
我的设置:
- 我创建了一个新的 REST API。
- 然后我创建了一个名为
proxy
的新 Configure as a Proxy 资源,其资源路径/{proxy+}
具有以下ANY
方法设置作为代理集成:- 集成类型
HTTP Proxy
- 端点URL:
https://api.mysite.com/{proxy}
- 内容处理:
Passthrough
- 集成类型
- 作为下一步,我通过向
URL Query String Parameters
部分添加一个新的查询字符串为我的/{proxy+} - ANY
配置了一个Integration Request
:- 姓名:
myApiKey
- 映射自:
'111'
- 姓名:
- 然后我点击
Deploy API
到test
阶段并得到Invoke URL
,比方说:https://xxx.execute-api.yyy.amazonaws.com/test
.
即使使用代理集成,我们仍然可以覆盖请求和响应。 Here 是博客。让我试着总结一下。
- 确保未选中
Use Proxy Integration
- 映射模板中用于替换
apiKey
查询参数的简单 VTL 模板。
#set($newApiKey = "abcd") $input.json("$") #set($context.requestOverride.querystring.apiKey = $newApiKey)
- 添加方法响应示例响应代码 200、400 和 500。
- 为每个响应代码的每个状态代码添加集成响应,例如具有传递行为的 2xx
2\d{2}
的 http 状态。
假设我们有一个 proxy
路径 /someapi/sompath
设置。以上模板会将 /someapi/sompath?apiKey=100
替换为 {proxy}?apiKey=abcd