gpt4 book ai didi

java - AWS API Gateway 集成响应

转载 作者:行者123 更新时间:2023-11-29 04:22:52 26 4
gpt4 key购买 nike

我正在使用 AWS Lambda 和 API 网关,但我的 API 响应代码出现问题,
如果出现异常,我在响应中将 responseCode 设置为 400,
但是 API 状态是 200。

我发现我的解决方案与 AWS API Gateway 的 Integration Response 有关,
我创建了我的应用程序需要的所有可能的 Http 状态代码,
我在集成响应中设置了 Lambda 错误正则表达式,
但是,尽管我在我的 API 响应中发送了“responseCode”:“400”(响应类型是 Java 中的 JsonObject),但我仍然获得了 200 的 API 状态。

我有以下代码 AWS Lambda 代码,
我将 ErrorCode 作为查询参数传递给我的 Get 方法,
并在响应中返回相同的错误代码,例如。 “响应代码”:“400”。

我的预期输出是 "responseCode": "400"但是,API 的状态也应该变成 400 而不是 200。

public class MainHandler implements RequestHandler<JSONObject, JSONObject> {

public JSONObject handleRequest(JSONObject request, Context context) {

try {
JSONObject requestJson = (JSONObject) new JSONParser().parse(request.toString());
System.out.println("RequestJson : " + requestJson);

JSONObject params = (JSONObject) requestJson.get("params");
System.out.println("Params : " + params);

JSONObject queryString = (JSONObject) params.get("querystring");
System.out.println("QueryString : " + queryString);

String error = (String) queryString.get("errorCode");
System.out.println("ErrorCode : " + error);

JSONObject resp = new JSONObject();
resp.put("responseCode", error);

return resp;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

AWS API Gateway 方法响应 - enter image description here

AWS API Gateway 集成响应 - enter image description here

postman 响应 -
API 状态显示 200 Ok,而我希望它为 400。 enter image description here

我指的是以下链接 -
1. https://forums.aws.amazon.com/thread.jspa?threadID=192918
2. Is there a way to change the http status codes returned by Amazon API Gateway?

最佳答案

您的 Lambda 错误正则表达式不是正则表达式。将其更改为 .*"responseCode":\s"400".* 应该可以。

但对于那个用例,激活 Lambda proxy integration 会更好.这提供了一种更灵活的方式来直接从 lambda 函数设置响应代码。

关于java - AWS API Gateway 集成响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48008711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com