[英]AWS API Gateway Integration Response
我正在使用AWS Lambda和API Gateway,並面臨我的API響應代碼的問題,
如果出現異常,我在響應中將responseCode設置為400,
但API狀態為200。
我發現我的解決方案與AWS API Gateway的集成響應有關,
我創建了我的應用程序所需的所有可能的Http狀態代碼,
我在集成響應中設置了Lambda Error Regex,
但是我的API狀態仍為200,盡管我在我的API響應中發送了“responseCode”:“400”(響應類型是Java中的JsonObject)。
我有以下代碼AWS Lambda代碼,
我將ErrorCode作為查詢參數傳遞給我的Get方法,
並返回相同的錯誤代碼作為響應,例如。 “responseCode”:“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. 有沒有辦法更改Amazon API Gateway返回的http狀態代碼?
您的Lambda Error Regex不是正則表達式。 將其更改為.*"responseCode":\\s"400".*
應該這樣做。
但對於該用例,最好激活Lambda代理集成 。 這提供了一種更靈活的方式來直接從lambda函數設置響應代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.