API Gateway 与 CloudSearch 集成存在斜杠问题

问题描述 投票:0回答:1

我目前在尝试将 AWS API Gateway 与 CloudSearch 集成时遇到问题。我已按照官方文档执行集成。

当我的后端服务将编码请求发送到 API 网关,然后在发送到 CloudSearch 之前进行解码时,就会出现问题。

这是一个例子:
后端服务发送:

pretty%3Dtrue%26fq%3Dsectors%3A%27One%2FTwo%27%26q%3Dmatchall%26q.parser%3Dstructured

API网关将其解码为:
pretty=true&fq=sectors:'One/Two'&q=matchall&q.parser=structured

然后,它发送到 CloudSearch:
q=matchall&pretty=true&q.parser=structured&fq=sectors:
'One/two'

不幸的是,请求中的斜杠在到达 CloudSearch 时不再进行编码,从而导致 404 错误。

我还在这里找到了类似的未解决的线程:link

如果您能提供有关如何解决此问题的任何见解或建议,我将不胜感激。有没有办法强制 API Gateway 不解码参数,或者让 CloudSearch 期望解码的参数?

提前谢谢您。

amazon-web-services aws-api-gateway amazon-cloudsearch
1个回答
0
投票

您需要将API网关方法更改为POST。并应用脚本将搜索查询移动到正文。

#set($context.requestOverride.header.Content-Type = 'application/x-www-form-urlencoded')
#set($allParams = $input.params().querystring)
#set($queryString = "")
#foreach($paramName in $allParams.keySet())
#set($queryString = $queryString + "$paramName=$util.urlEncode($allParams.get($paramName))&")
#end
$queryString
© www.soinside.com 2019 - 2024. All rights reserved.