![](/img/trans.png)
[英]AWS API Gateway:Mock integration response dynamic header mapping values
[英]AWS Api Gateway mock integration response header mapping, how?
我正在挖掘網絡並一直試圖找到在以下情況下我缺少的東西:我試圖解決的基本問題是:當http://example.com/login?target=http://google.com被調用時,用戶被重定向到 OAuth 登錄頁面,其狀態指的是目標查詢參數中的 url。
所以: http://example.com/login?target=http://google.com
將被重定向到http://authenticator.com/login?type=...&redirect_uri=...&client_id=...&state=http://google.com
我可以用 Lambda 做到這一點,但我覺得沒有必要,可以單獨使用 API Gateway。
首先,我創建了/login
資源和一個GET
方法,並向其中添加了一個模擬集成。
我在方法響應中設置了 302:
最后我添加了集成響應:
但是,當我測試該方法時,缺少 Location 標頭。 如果我在集成響應中的位置標頭中放置一個靜態字符串,它會起作用,但是無論我在標頭映射中嘗試什么,它都不起作用。
我在集成請求映射中嘗試過的事情:
{
"statusCode": 200,
"headers": {"target": "https://google.com"}
}
{
"statusCode": 200,
"target": "https://google.com"
}
我似乎integration.response.body.target
或integration.response.header.target
總是空的。 根據文檔, headers
屬性可以是集成響應的一部分,但我無法從我在集成請求中設置的映射模板中獲得任何值。
知道我做錯了什么嗎?
您可以進行響應覆蓋,例如:在您的集成請求中
#set($urlProxy = $method.request.path.proxy)
{
"statusCode": 301,
}
#set($context.responseOverride.header.location = "https://www.foo.bar.com/$urlProxy")
這將覆蓋您的響應標頭位置
看起來您正在嘗試從標頭值進行映射,但從未設置標頭值,而是在正文中設置了一個名為“標頭”的屬性。 為了映射來自integration.response.header.target
的值,您需要在集成請求的 HTTP 標頭部分的模擬中設置該值。
但是,您可能會發現將模擬的請求映射模板設置為更簡單
{ "statusCode": 200, "target": "https://google.com" }
然后您可以使用響應映射將您的Location
標頭設置為integration.response.body.target
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.