4

在AWS Lambda代碼中,如何獲取來自AWS Gateway API的HTTP請求的HTTP方法(例如,GET,POST ...)?如何獲取AWS Lambda中的HTTP方法?

我明白documentationcontext.http方法是解決方案。

但是,我無法設法使其工作。

舉例來說,當我嘗試添加以下3行:

if (context.httpMethod) { 
      console.log('HTTP method:', context.httpMethod) 
    } 

進入 「微服務-HTTP端點」 藍圖的AWS示例代碼如下:

exports.handler = function(event, context) { 

    if (context.httpMethod) { 
     console.log('HTTP method:', context.httpMethod) 
    } 

    console.log('Received event:', JSON.stringify(event, null, 2)); 

    // For clarity, I have removed the remaining part of the sample 
    // provided by AWS, which works well, for instance when triggered 
    // with Postman through the API Gateway as an intermediary. 
}; 

我從來沒有在日誌中有任何東西,因爲httpMethod永遠是空的

回答

9

context.httpMethod方法僅適用於模板。因此,如果您想要訪問Lambda函數中的HTTP方法,則需要在API網關(例如GET)中找到該方法,請轉至集成請求部分,單擊映射模板,然後添加一個新的映射模板application/json。然後,選擇application/json並選擇映射模板並在編輯框中輸入類似:

{ "http_method": "$context.httpMethod" }

然後,當你的lambda函數被調用時,你應該看到在event在調用時傳遞一個新的屬性其中包含用於調用函數的HTTP方法的http_method

+0

謝謝。順便說一句,在您的答案只是一個小錯字錯誤:'「」$ context.httpMethod「'是$」context.httpMethod「' –

+0

謝謝,我糾正了這個問題。 – garnaat

+0

它是否適用於Chrome擴展高級版REST客戶端?當我使用它時,我獲取上下文變量的空值,但它可以與Postman和DHC擴展一起使用,或者在瀏覽器中直接調用(如果它是GET端點)。 –

相關問題