我目前正在使用asp web api开发一个多租户saas应用程序。 api将由第三方应用程序发布和使用。我的问题是关于版本控制。我正在努力寻找建立api的方法,以便在我更新api时,它不会使用api停止工作的第三方应用程序。我已经看到很多api将版本号附加到网址中。但这意味着我必须保留旧版本api,直到所有第三方应用程序都已升级并使用最新的API。我还必须更新旧的api以适应数据库的变化。这似乎很多工作。大公司如何解决这个问题?
答案 0 :(得分:1)
没有简单的方法可以解决这个问题;只要您的客户使用它们,您就必须完成支持旧版本的工作。
首先采用RESTful方法,避免使用胖控制器'可能有助于减少痛苦,但除此之外,每个旧的API调用都需要调用您的新服务层,并且需要以客户期望的格式返回结果。
答案 1 :(得分:1)
我正在努力寻找一种方法来构建api,以便在我更新api时,它不会使用api停止工作的第三方应用程序。我见过很多api将版本号附加到网址中。但这意味着我必须保留旧版本api,直到所有第三方应用程序都已升级并使用最新的API。
没有人,绝对没有人比NetFlix更多地研究,构建,版本化和维护API - 不是外部的,而是内部的。他们在API中使用了显式版本控制(例如URL),并维护了同一API的多个版本,并通过提供激励(新功能)让他们的客户继续前进。这也可以内置到您的SLA中,例如您保证仅在12个月内支持特定版本。
这是一个非常有争议的话题,你会听到人们建议隐式版本控制(例如通过媒体类型等)。随意倾听那些但实用主义倾向于明确和纯粹主义的暗示。