构建路由API

时间:2013-02-14 14:43:34

标签: ruby api rest soa

我需要构建一个基本上公开某些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。

感谢。

3 个答案:

答案 0 :(得分:2)

我决定使用API​​ Umbrella。

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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