簡體   English   中英

集成響應中的AWS API Gateway標頭和主體映射

[英]AWS API Gateway Header and Body Mappings in Integration Response

我正在嘗試在集成響應中為API網關端點正確設置正文映射和標頭映射。

在我們的Lambda中,我們有

if (response.statusCode == 200) {
    context.succeed(output);
} else if (response.statusCode == 206) {
    var paginationObject = {
        errorType : "PartialContent",
        errorCode : 206,
        detailedMessage : "PartialContent Returned",
        stackTrace : [],
        data : {
               output
        }
    };

    context.fail(JSON.stringify(paginationObject));
}

然后,我使用。* PartialContent。*的Lambda錯誤正則表達式在集成響應中獲取此內容,並將我的人體貼圖模板作為

#set($allParams = $input.params())
#set($body = $util.parseJson($input.json('$.errorMessage')))

$body

這為我提供了正確的HTTP狀態代碼和JSON輸出,但是主體中的數據過多。 響應如下所示:

{
  "errorType":"PartialContent",
  "errorCode":206,
  "detailedMessage":"PartialContent Returned",
  "stackTrace":[],
  "data":{
    "output":{
      "status":206,
      "bodyJson":[{"call_date":"2017-08-19 18:17:21"}],
      "headers":{"date":"Thu, 02 Nov 2017 18:36:52 GMT",
                 "server":"Apache",
                 "x-pagination-page-size":10}
    }
  }
}

我希望標題實際上在響應中顯示為標題,並且我希望正文只是bodyJson內部的內容

我試圖將主體映射模板更改為使用$ body.data.output.bodyJson ,但是當我這樣做時,主體完全為空。 我還在Header Mappers中設置了headers,同時嘗試了integration.response.body.headers.x-pagination-page-sizeIntegration.response.header.x-pagination-page-size,但兩次都是即使我可以在JSON輸出中看到正確的值,也還是空白。

我如何只將bodyJson元素作為響應的主體輸出? 以及如何正確獲取標頭映射?

您是否嘗試在集成響應中使用Lambda錯誤正則表達式 例如:

。* “狀態”:400 *

人體貼圖模板

#set ($errorMessageObj = $util.parseJson($input.path('$.errorMessage')))
{
  "status" : "$errorMessageObj.status",
  "errorType" : "$errorMessageObj.errorType",
  "message" : "$errorMessageObj.errorMessage"
}

我在Lamda中創建了一個錯誤函數

function error(status, errorType, errorMessage, callback){
    callback(JSON.stringify({
        status: status,
        errorType: errorType,
        errorMessage: errorMessage
    }));
}

用法:

error(404, "Not Found", "Resource is not found", callback);

暫無
暫無

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

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