【问题标题】:How can I get a Lambda using AWS Gateway to return HTTP error status code in C#如何使用 AWS Gateway 获取 Lambda 以在 C# 中返回 HTTP 错误状态代码
【发布时间】:2017-05-25 01:25:35
【问题描述】:

我正在尝试通过我的 AWS Gateway 返回状态错误代码(例如 500、400、401),但似乎无法弄清楚。

我看过一些例子,他们做了如下的事情:

return context.fail('Bad Request: You submitted invalid input');

但是,ILambdaContext 对象上没有失败或成功方法。

这是我到目前为止所得到的(非工作)

Lambda 代码:

 var addressresponse = new AddressValidationResponse();
            addressresponse.Errors = new string[1];
            addressresponse.Errors[0] = "test error";
            addressresponse.Reason = "client_error";

 return addressresponse;

我想我已经接近了,但我仍然得到了 200 的回复:

{
  "Reason": "client_error",
  "Errors": [
    "test error"
  ]
}

我在这里错过了什么?

【问题讨论】:

    标签: c# amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    您需要在 C# lambda 函数中引发异常,并使用 API 网关控制台将特定错误代码映射到响应映射模板中的 HTTP 响应代码。

    【讨论】:

    • 我以为我在marcelog.github.io/articles/… 之后尝试过。不过运气不好,我贴了一堆屏幕截图,希望有人能看到我没看到的东西。
    • 是的,这+在c#中抛出异常让我设置状态码。添加例外部分,让我知道,我会接受。
    【解决方案2】:

    我回答了类似here

    基本上,您需要返回 APIG 识别的响应对象。

    有 C# 例子here

    我会说我不会在上下文 Lambda 中使用 C#,基本上你需要返回标头、状态代码和响应正文。

    【讨论】:

    • 这是有道理的,我从 c# 示例中复制粘贴了代码(并添加了错误文本)并将我的注释掉了,但是我仍然从带有错误正文的 lambda 中得到 200。我设置了一个正则表达式来检查错误。*,但没有运气。我是否需要指定任何映射模板或自定义标头以使响应对象(来自链接)与网关一起使用?
    • 这是不正确的,在 c# 中需要抛出与集成响应正则表达式相关的异常。
    • 啊哈你去!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 2019-08-22
    • 2017-12-25
    • 2017-10-04
    • 2017-06-27
    • 2017-01-28
    • 2016-02-07
    相关资源
    最近更新 更多