簡體   English   中英

AWS API 網關 POST 請求不適用於 Lambda function

[英]AWS API Gateway POST request is not working for Lambda function

這是我的 lambda function:

@Override
    public List<JobData> handleRequest(Map<String,String> searchFilters, Context context) {
        List<JobData> jobs = new ArrayList<>();
        if(searchFilters.get("job_title") != null){
           // populate jobs list using a method.
        }else{
          // populate jobs list using another method.
        }
        return jobs;      
    }

我使用以下測試事件來測試 lambda: 在此處輸入圖像描述

對於上述測試輸入,lambda function 按預期工作。 在此處輸入圖像描述

然后,我創建了一個 API 網關,其 POST 請求觸發了上述 lambda function。 在此處輸入圖像描述

然后,我使用 REST API 網關發送帶有以下正文內容的 POST 請求,其中包含 header Content-Type: application/json

請求正文:

{
  "job_title": "software engineer"
}

但它正在導航到 lambda 代碼中的else塊(表明 API 網關未正確攔截 POST 請求參數),這是意料之外的。

我嘗試使用 AWS 中的 API 網關配置進行排列和組合。 但他們都沒有工作。 我覺得我的 lambda function 可能需要更改以使其與 API 網關一起使用。 但到目前為止,我的任何嘗試都沒有成功。 任何建議將不勝感激。 謝謝!

默認情況下,POST 請求不會作為event object 直接發送到 Lambda。 event object 將比您在測試用例中擁有的要多得多,並且實際的 POST 數據將在事件對象的屬性之一中下降。 如果您在 API 網關中使用 Lambda 代理集成,則事件將如下所示

你有兩個選擇:

  1. 在 API 網關中創建自定義映射模板,以將發送到 Lambda 的事件轉換為您所期望的。

  2. 修改您的 Lambda 代碼以處理當前正在發送的格式。 我建議使用這個庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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