2

目标:获取调用AWS-API网关上的资源(路由)的方法。请求正文覆盖HTTP方法?

我的进度:我有一个端点,它具有GET,PATCH,POST方法,在集成请求步骤中映射到模板。对于PATCH模板看起来是这样的:

"editJobsTemplate": { 
    "application/json": { 
    "method": "$context.httpMethod", 
    "job": "$input.json('$.job')" 
    } 
} 

使用this document创建。

问题:当PATCH身体是空的,我得到了类似效应初探:

{ 
    "eventType": { 
    "method": "PATCH", 
    "job": "" 
    } 
} 

但是当有与“工作”,在身体发出的一个关键目标......

{ 
    "job":"some text value" 
} 

则响应的样子:

{ 
    "eventType": { 
    "job": "some text value" 
    } 
} 

编辑1

This是来自API网关资源面板的模板屏幕截图。

和我上邮差测试了得到this result

编辑2 This是显示Content-Type头被设置为application/JSON,因为每从b.b3rn4rd的响应,并示出了this我之后得到的回应。

+0

实际上是第一个代码粘贴的模板还是那个招摇的节选?您是否使用测试功能在控制台中对此进行了测试? –

+0

我为我的部署使用了无服务器,因此我添加了屏幕截图来解决您的评论,第一个粘贴是模板。我还添加了关于邮差测试的截图。 –

回答

1

当您调用端点时,请确保指定了适当的内容类型标题。在你的情况下,它可能是Content-Type: application/json,否则,请求映射将被跳过,并且请求将按照原样传递给(lambda?)。

而且,我已经可以发现,另一个潜在的问题与"job": "$input.json('$.job')"

应该是:

"job" : $util.escapeJavaScript($input.json('$.job')) 没有引号!

+0

我已添加标题,我在我的编辑中添加了屏幕截图。我现在得到一个不好的字符串作为回应。我只是运行一个测试来从请求中获取方法,所以没有使用escapeJavaScript实用程序,尽管如此,感谢提醒。 –

+0

没有仔细看到引号,这工作。 –

+0

我没有怀疑过,当开始使用网关时有类似的问题:) –