Api Gateway是否允许没有请求正文的发布请求

问题描述

我创建并指定了路径参数为id并使用它从db获取数据,然后使用http从数据库发布数据。我正在使用AWS ApiGateway来管理此终端节点,但是,当我传递ID并尝试在没有请求主体或某些随机有效请求主体的api网关上测试终端节点时,它显示

<!DOCTYPE html> 
<html> 
<body> 

<video id="myVideo" width="320" height="176" onclick="playOrPause();" oncontextmenu="return false;" controls >
  <source src="https://www.w3schools.com/tags/mov_bbb.mp4" type="video/mp4">
  <source src="https://www.w3schools.com/tags/mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>
<div>
    
<input type="button" id="btnRewind" name="btnRewind" value="Rewind" onclick="rewindVideo();" />
<input type="button" id="btnPlay" name="btnPlay" value="Play" onclick="playVideo();" />
<input type="button" id="btnPause" name="btnPause" value="Pause" onclick="pauseVideo();" />
</div>

<script>
    var video = document.getElementById("myVideo");
    
    function playOrPause() {
        if (video.paused) {
            playVideo();
        } else {
            pauseVideo();
        }
    }
    
    function playVideo() {
        video.play();        
    }
    
    function pauseVideo() {
        video.pause();
    }
    
    function rewindVideo() {
        //video.currentTime -= 0.5;
        video.playBackRate = -2;
        video.play();
    }    

</script> 

<p>Video courtesy of <a href="https://www.bigbuckbunny.org/" target="_blank">Big Buck Bunny</a>.</p>

</body> 
</html>

它还在日志中显示以下内容

"errors": [
        {
          "title": "Error in API Gateway","code": "DEFAULT_5XX"
        }
      ]

解决方法

要回答您的问题,是的,我们可以在没有主体的情况下在API网关上进行POST。错误很明显,它是路径中的非法字符。

有一个post on AWS FAQ。解决方案是在集成请求窗格中添加一个代理路径变量,这样它就不会对该路径的此特定路径运行任何验证检查。