【问题标题】:Building a routing API构建路由 API
【发布时间】:2013-01-30 09:39:41
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: ruby api rest soa


    【解决方案1】:

    我决定使用 API Umbrella。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • WEBrick 很慢,如果我没记错的话,不能处理并发请求?
      • Flask 看起来很酷,但它与使用 Sinatra 有什么不同?
      • @Johandk:我认为现在可以,但让我检查一下。
      • @Johandk:不太好。我只是从未使用过 Sinatra。无论如何,Flask 不会假设您正在尝试编写一个 web 应用程序,我发现这很有帮助。
      【解决方案3】:

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

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

      【讨论】:

      • 现在检查一下。看起来很有希望。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2017-05-03
      • 2010-09-13
      相关资源
      最近更新 更多