我目前在尝试将 AWS API Gateway 与 CloudSearch 集成时遇到问题。我已按照官方文档执行集成。
当我的后端服务将编码请求发送到 API 网关,然后在发送到 CloudSearch 之前进行解码时,就会出现问题。
这是一个例子:
后端服务发送:
pretty%3Dtrue%26fq%3Dsectors%3A%27One%2FTwo%27%26q%3Dmatchall%26q.parser%3Dstructured
pretty=true&fq=sectors:'One/Two'&q=matchall&q.parser=structured
q=matchall&pretty=true&q.parser=structured&fq=sectors:
'One/two'
不幸的是,请求中的斜杠在到达 CloudSearch 时不再进行编码,从而导致 404 错误。
我还在这里找到了类似的未解决的线程:link
如果您能提供有关如何解决此问题的任何见解或建议,我将不胜感激。有没有办法强制 API Gateway 不解码参数,或者让 CloudSearch 期望解码的参数?
提前谢谢您。
您需要将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