![](/img/trans.png)
[英]How to get proper http status codes from Amazon API gateway integrated with C# lambda (not proxy integration)?
[英]How can I get a Lambda using AWS Gateway to return HTTP error status code in C#
我正在嘗試通過我的 AWS Gateway 返回狀態錯誤代碼(例如 500、400、401),但似乎無法弄清楚。
我看過一些例子,他們做了類似的事情:
return context.fail('Bad Request: You submitted invalid input');
但是, ILambdaContext
對象上沒有失敗或成功方法。
這是我到目前為止所得到的(非工作)
拉姆達代碼:
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# lambda 函數中引發異常,並使用 API 網關控制台將特定錯誤代碼映射到響應映射模板中的 HTTP 響應代碼。
您可以使用 APIGatewayHttpApiV2ProxyResponse 來包裝您的響應,如下所示:
public static async Task<APIGatewayHttpApiV2ProxyResponse?> FunctionHandler(APIGatewayHttpApiV2ProxyRequest request, ILambdaContext context)
{
var response = new APIGatewayHttpApiV2ProxyResponse();
try
{
response.Body = await DoSomeWorkAsync();
response.StatusCode = (int)HttpStatusCode.OK;
}
catch (Exception ex)
{
response.StatusCode = (int)HttpStatusCode.InternalServerError;
response.Body = JsonSerializer.Serialize(new { error = ex.Message }) ;
}
return response;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.