2016-05-17 62 views
2

我想要做一些不同的基本路由與API網關。 我需要實現以下情形:使用API​​網關作爲HTTP代理與URI(請求路徑+變量查詢參數)傳遞

  • 用戶發出請求xxxx-execute-api.eu-west-1.amazonaws.com/prod/ API1 /a/b/../n?參數1 = VAL1 & parma2 = VAL2 ... & paramn = VALN的請求應該去API1 .back.end/A/b /../ N'參數1 = VAL1 & parma2 = VAL2 ... & paramn = VALN

  • 用戶提出請求xxxx-execute-api.eu-west-1.amazonaws.com/prod/ api2 /a/b/../n?param1=val1 & parma2 = val2 ... & paramn = valn請求應該去api2 .back.end/a/b /../ n?param1 = val1 & parma2 = val2 ... & paramn = valn

  • user make request xxxx-execute-api.eu-west-1.amazonaws.com/prod/*****/a/b/../n ?參數1 = VAL1 & parma2 = VAL2 ... & paramn = VALN的請求應該去API3 .back.end/A/b /../ N'參數1 = VAL1 & parma2 = VAL2 ... & paramn = VALN

路由應該基於階段後的第一個路徑索引完成,並且之後的所有內容都應該傳遞到http後端(如透明代理)。

換句話說,如果路徑索引1爲API1,轉發請求API1 .back.end與完整的URI路徑索引1之後;如果路徑索引1是api2,則轉發請求到api2。後綴與路徑索引1後的完整URI;如果路徑索引1是其他任何內容比顯式值api1或api2,轉發請求到api3 .back.end具有完整的URI後的路徑索引1;

我會如何實現這一點,而無需添加任何額外的圖層(lambda,cloudfront,ec2等)?

謝謝!

回答

2

API網關今天不支持此用例;每個方法和路徑必須在您的API定義中明確定義。

支持這樣的直通代理是我們從其他客戶那裏聽到的一個請求,我們可能會考慮在將來對服務進行更新時支持它。

更新09/20/2016:我很高興地宣佈,我們已經推出了一組功能以允許如上所述的代理請求。有關更多詳情,請參閱我們的announcement

+0

雖然不理想,但您可以在Lambda中執行此路由/重定向,難道你不能?通過返回一個重定向或代理一個呼叫到目標服務器,或許? – ericpeters0n

+0

@ ericpeters0n API網關仍然需要支持變量或「貪婪」資源路徑,但它不需要。目前,您需要在API網關定義中定義每個資源/方法,並將其映射到集成(例如Lambda)。 –

相關問題