【问题标题】:Versioning Azure Mobile App API (Node.js)版本控制 Azure 移动应用 API (Node.js)
【发布时间】:2017-05-19 12:36:24
【问题描述】:

我目前正在为包含以下部分的软件系统开发最后一批更改(希望如此):

  1. Azure SQL Server 数据库后端。
  2. Azure 移动应用 API 中间件。
  3. iOS/Android 客户端。

我想知道版本#2 的最佳方式是什么,以便我可以使其API 与#3 保持同步。也就是说,我希望 iOS 客户端的 v1.0 只能调用 Azure API 的 v1.0。当我升级到 Azure API 的 v2.0(尝试保持相同的 API 方法名称)时,我希望 iOS 客户端的 v1.0 仍然可以访问 iOS 客户端的 API v1.0 和 v2.0 以访问 API v2.0。

从逻辑上讲,您似乎可以将 v1.0 复制到新的 v2.0 移动应用程序中。这样做的好处是将所有内容分开,无需更改 API 方法名称,只需更改 Azure SDK 客户端的基本 URL。但这显然实际上是站不住脚的,尤其是当您需要为高负载的客户提供服务时。这可能会导致一些相当高的费用。

我已经对我的 API 文件进行了子文件夹处理,这似乎对我调用它们的方式没有任何影响。如果我有一个ReallyCoolMethod.js 文件,它的位置似乎并不重要,只要它是根目录中api 文件夹的后代。我想避免这样的事情:

  • v1.0:ReallyCoolMethod.js
  • v2.0:ReallyCoolMethod_v2.js

但这是最好的方法吗?有没有办法做到以下几点?

- root
   |-- api
        |-- v1
        |    |-- ReallyCoolMethod.js
        |    
        |-- v2
             |-- ReallyCoolMethod.js

如果是这样,我如何将来自InvokeAPI 的呼叫路由到正确的版本?

注意:不是询问 Azure 移动服务和 Azure 移动应用程序之间的区别。我知道那里涉及一些版本控制问题,但这与我的问题无关。我的问题是关于单个 Azure 移动应用程序和该单个应用程序容器中不同版本的 my API。

【问题讨论】:

    标签: node.js api azure versioning


    【解决方案1】:

    REST API 的常见做法是在 URI 中包含版本,例如https://host/api/v1.0/users/123。也许您可以遵循相同的约定?您的后端会根据 uri 路由到正确版本的代码。

    【讨论】:

    • 感谢您的回答。回复较晚,抱歉。由于我是通过 Azure 移动应用 SDK 调用此 API,我不确定是否可以控制 api{whatever}.js 之间的路径。就像现在一样,当我调用 API 方法时,我为组织准备的文件夹似乎无关紧要。例如,如果我有https://host/api/Authentication/Login.js,我只需用invokeAPI:"Login" 调用它。因此,我认为您的答案可能适合 Web 应用程序,但不适用于我的特定用途。但也许这会给我指明正确的方向。谢谢!
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2012-01-09
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多