2013-02-14 70 views
3

我需要構建一個基本公開某些URI端點並將它們映射到任意數量的後端URL的API。構建路由API

所以API將有映射在蒙戈是這樣的:

{"name": "example", "from": "/resources", "to": "http://backendservice.com/1/billing", "method": "POST"} 

{"name": "example1", "from": "/resources/:id", "to": "http://backendservice.com/1/billing/:id", "method": "GET"} 

{"name": "example2", "from": "/somethingelse/*", "to": "http://google.com/foo/*", "method": "ANY"} 

這裏的目的是有一個單一入口點我們所有的客戶可以用它來訪問所有的各種服務。它還允許簡化日誌記錄和報告。

因此,如果我們請求api.example.org/resources,系統會將傳入的請求URL與目標URL進行匹配。將請求發送到目標並接收響應,進行適當的日誌記錄並處理任何錯誤。說得通?

我的問題(S):

是否有任何現成的開源解決方案,做這的?

你認爲哪個框架/庫等是一個好的起點。我已經看過Goliath(Ruby),但只要它是開源和Linux,就不限於任何語言。

謝謝。

回答

0

如果你願意超越Ruby,你可以使用Python庫Flask。另外,您可以使用Ruby的內置WEBrick HTTP服務器庫來完成此操作。只需創建一個在URL字典中執行查找的servlet,或者使用元編程動態創建許多servlet,然後將它們裝載到不同的URL上。

+0

如果我沒有記錯,WEBrick很慢,無法處理併發請求? – Johandk 2013-02-14 20:00:02

+0

燒瓶看起來很酷,但它與使用Sinatra有什麼不同? – Johandk 2013-02-14 20:05:28

+0

@Johandk:我認爲現在可以,但讓我檢查一下。 – Linuxios 2013-02-14 22:33:52

0

WSO2API管理器是一個完全開源的產品,它可以在apcheV2許可下使用。

在哪裏可以通過APIManager和ESB實現多個端點配置。 當您發佈一個API時,您可能需要指向一個服務端點(它可以是代理端點/另一個REST API,位於wso2esb處),並且從ESB端您可以根據請求將請求路由到多個端點。

+0

現在檢查了這一點。看起來很有希望。 – Johandk 2013-02-14 20:05:55