我有一个Python前夕的公共API,我们可以通过以下方式对其进行查询:
https://my-api.com/collections?where= {“名称”:“彼得”}
我想通过以下方式创建一个API网关来代理相同的URL终结点:
https://my-api-amazon-gateway.com/prod/collections?where= {“名称”:“彼得”}
我做了什么:
如果我去的方法测试,我把{"name":"peter"}
为地方查询字符串,并application/json
作为标题内容类型,所有的作品很不错。
如果我部署了该API并尝试在已部署的API中使用相同的端点,那么它将无法正常工作:
https://my-api-amazon-gateway.com/prod/collections?where= {“名称”:“彼得”}
它返回错误400 Bad Request。CloudWatch中没有任何记录。
如果我尝试打
https://my-api-amazon-gateway.com/prod/collections?where=test
然后一切正常运行,我得到HTTP 200 OK,并且Python-eve错误The browser (or proxy) sent a request that this server could not understand.
的结果与如果我尝试击中的结果相同
因此,由于我不知道的原因,该测试有效,但是当查询字符串是一个对象时,已部署的API Gateway无法正常工作。
有什么线索吗?
非常感谢你!
您将需要对参数进行URL编码。通过“方法测试”进行测试时之所以起作用,是因为它需要对参数进行编码。
取而代之的是https://my-api-amazon-gateway.com/prod/collections?where= {“ name”:“ peter”}
尝试使用https://my-api-amazon-gateway.com/prod/collections?where=%7B%22name%22%3A%22peter%22%7D
希望这可以帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句