3

我需要构建一个基本上公开某些 URI 端点并将它们映射到任意数量的后端 URL 的 API。

所以 API 在 Mongo 中会有这样的映射:

{"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。向目的地发出请求并接收响应,进行适当的日志记录并处理任何错误。说得通?

我的问题:

是否有任何开箱即用的开源解决方案可以做到这一点?

您建议将哪些框架/库等作为一个好的起点。我看过 Goliath (Ruby),但不限于任何语言,只要它是开源和 linux 即可。

谢谢。

4

3 回答 3

2

我决定使用 API Umbrella。

https://github.com/NREL/api-umbrella

它提供了我所需要的。用 Ruby 构建,使用 mongo,进行路由。完美的。

于 2013-02-15T07:18:29.437 回答
0

WSO2API Manager 是一个完全开源的产品,可在 apcheV2 许可下使用。

您可以在其中使用 APIManager 和 ESB 实现这种多端点配置。当您发布 API 时,您可能需要指向一个服务端点(它可以是代理端点/wso2esb 上的另一个 REST API),并且您可以从 ESB 端根据请求将请求路由到多个端点。

于 2013-02-14T14:58:02.480 回答
0

如果你愿意超越 Ruby,你可以使用 Python 库Flask。此外,您可以使用 Ruby 的内置 WEBrick HTTP 服务器库来完成此操作。只需创建一个在 URL 字典中查找的 servlet,或者使用元编程动态创建许多 servlet,然后将它们安装在不同的 URL 上。

于 2013-02-14T14:54:55.923 回答