【发布时间】:2018-06-09 01:47:14
【问题描述】:
我正在使用 AWS Lambda 和 API Gateway,但我的 API 响应代码存在问题,
如果出现异常,我在响应中将 responseCode 设置为 400,
但是 API 状态是 200。
我发现我的解决方案与 AWS API Gateway 的集成响应有关,
我创建了我的应用程序需要的所有可能的 Http 状态代码,
我在集成响应中设置了 Lambda 错误正则表达式,
但是,尽管我在我的 API 响应中发送了“responseCode”:“400”(响应类型是 Java 中的 JsonObject),但我仍然得到 API 状态为 200。
我有以下代码 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;
}
}
}
邮递员回应 -
API 状态显示 200 Ok,而我希望它为 400。
我指的是以下链接 -
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?
【问题讨论】:
标签: java amazon-web-services aws-lambda aws-api-gateway