簡體   English   中英

AWS API網關集成響應

[英]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;
        }
    }
}

AWS API網關方法響應 - 在此輸入圖像描述

AWS API網關集成響應 - 在此輸入圖像描述

郵遞員回應 -
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM