如何构建具有单个URL但多个版本的应用程序的API服务?

时间:2016-12-14 07:23:32

标签: asp.net-mvc

这是我的情况:
有一个API服务,它会在一个季节发布一个新版本 我为每个版本创建一个Web应用程序。因此,默认网站下的Web应用程序列表如下所示:

  • API_2016S1
  • API_2016S2
  • API_2016S3
  • ...

对于客户端,API的URL应该相同,即使其版本已更改。 版本信息不会是API网址的一部分。
客户端和API版本之间的关系存储在数据库中。

因此客户端请求的流程可能如下:

  • 客户端
  • 发送请求(标题和会话的cookie中包含客户端ID)
  • 门户网站应用程序:
    • 验证
    • 确定应该使用哪个API应用程序
    • 将客户的请求发送到特定的API应用程序
  • 特定API应用程序:
    • 接收请求(无论身份验证)
    • 处理请求
    • 对门户网站应用程序的响应
  • 门户网站应用程序对客户端的响应

因此,对于即将推出的新版API服务,我只需要为它们创建Web应用程序并在数据库中设置关系。

现在我正在尝试自己构建门户网站应用程序 我的问题是:是否有任何类似的结构或机制可以处理这种情况?或者对我有任何想法。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在寻找的是API网关或API中间件。所有客户端都不会向实际API发送请求,而是将这些请求发送到此中间件,并将其作为代理并将请求转发给正确的API。 您可以自行部署和管理一些开源解决方案,例如KONGTyk(和其他),或者您可以将AWS API Gateway视为托管服务。