Amazon API Gateway是否有改变返回的HTTP状态码的方法?

123
例如,如果我想为无效参数返回特定的400错误码,或者当lambda函数调用导致创建时返回201。
我希望有不同的HTTP状态码,但是看起来API网关总是返回200状态码,即使lambda函数返回错误。

2
看起来我遇到的问题是我返回了一个自定义错误类型,这使得 errorMessage 正则表达式无法正确工作。从 lambda 返回一个标准字符串将使下面的解决方案起作用 - 但是返回自己的自定义错误对象则不行。 - MonkeyBonkey
我的解决方案是从Serveless版本0.5切换到1.0。此外,我正在使用Serveless文档中的响应,在响应对象中指定statusCode属性。希望能有所帮助。 - Relu Mesaros
12个回答

1

截至2021年2月有效

设置自定义HTTP状态码的最简单方法是在API Gateway中设置Lambda代理集成。

在API Gateway > 资源 > 操作下拉菜单 > 创建方法 > 选中 Lambda Proxy Integration 并选择适当的Lambda函数。

API Gateway 输入图像描述

enter image description here

Lambda

对于异步函数,只需返回一个带有 statusCodebody 属性的对象即可。对于同步函数,请使用 callback(null,obj);请参阅 完整文档

export const dummyFunction = async (event, context, callback) => 
{
 // ... logic
   return {
   statusCode: 400,
   body: JSON.stringify({...data}),
   }
};


结果
自定义状态码为400。

enter image description here


1
我有一个express应用程序,并在其前面使用了API网关进行HTTP集成。为了返回应用程序的状态代码而不是200 OK,我只需将应用程序的错误处理程序返回的HTTP状态代码添加到集成响应部分中的HTTP状态正则表达式中即可,这样就可以正常工作了。请确保您的应用程序正确处理错误。 enter image description here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接