Api Gateway 是不是允许没有请求正文的发布请求
Posted
技术标签:
【中文标题】Api Gateway 是不是允许没有请求正文的发布请求【英文标题】:Does Api Gateway allow post request without request bodyApi Gateway 是否允许没有请求正文的发布请求 【发布时间】:2021-02-12 01:27:37 【问题描述】:我已经创建并指定了路径参数作为 id 并使用它从 db 中获取数据,然后使用 http 从数据库中发布数据。我正在使用 AWS ApiGateway 来管理此端点,但是,当我传递 id 并尝试在没有请求正文或一些随机有效请求正文的 api 网关上测试端点时,它显示:
"errors": [
"title": "Error in API Gateway",
"code": "DEFAULT_5XX"
]
它还在日志中显示以下内容:
Illegal character in path at index 101: http://example.local/orders/items/create/id
【问题讨论】:
由于我更改了网址,因此索引 101 没有意义。但它指向我作为 id 传递的路径参数 您可以发布与您的请求等效的 cURL 吗?如果使用 Postman,在右侧,在发送按钮下,有一个code
按钮。另外,在 URL 中,您可以用 X
之类的字符替换您想隐藏的任何内容,而不是删除它,这样 101 才有意义?
并且允许 POST 没有正文。
curl --location --request POST 'xxxx-xxxxxgroup.abc.xxxxxxxxxxxxxx.com:443/xx/xxxxxxxxorders/…' 以上是 cURL。下面是我通过错误示例值传递的 URL:xxxxxxxxxx-appxxxxxxxx.env-xxxxxgroup.abc.xxxxxxxxxxxxxx.local/…id
【参考方案1】:
要回答您的问题,是的,我们可以在没有正文的情况下在 API Gateway 上进行 POST。错误很明显,它是路径中的非法字符。
关于这个有一个post on AWS FAQ。解决方案是在集成请求窗格中添加一个代理路径变量,这样它就不会对该路径的这个特定路径运行任何验证检查。
【讨论】:
谢谢。我没有在我的 cloudformation 文件中添加 method.request.path.id。添加相同的内容后它工作了以上是关于Api Gateway 是不是允许没有请求正文的发布请求的主要内容,如果未能解决你的问题,请参考以下文章
Kong API Gateway - 在自定义插件中读取请求正文
HTTP 请求正文未通过 AWS API Gateway 访问 AWS lambda 函数