c# - 我看不到对 Web api 进行版本控制的好处?
问题描述
为什么要对我的 Web api 进行版本控制?我真的不明白为什么我应该这样做。
我读过这篇文章:https ://vladsukhachev.wordpress.com/2016/12/12/web-api-versioning-in-real-world-applications/
在文章中,作者为版本 1 创建了一个名为 GetV1_0 的方法。然后他基本上再次创建了相同的方法,但将该方法重命名为版本 1.1 的 GetV1_1。为什么?我为什么要这样做?为什么不直接更改第一个而不进行任何版本控制?
任何可以获得一些好处的人为什么我应该这样做,而不是在应该添加任何新内容时更新方法?
解决方案
您链接到的文章的第一段对此进行了解释:
使用您的 API 的客户希望它不会改变。否则,他们的代码可能会由于更改合同或行为而失败。但是需求会发生变化,我们需要找到一种在不破坏现有客户端的情况下发展 API 的方法。因此,每次发生重大 API 更改时,您都需要发布新版本的 API。这并不意味着您需要永远支持所有版本。但是您需要谨慎地摆脱旧版本的 API,以便客户了解如何迁移到更新版本的 API。
想象一个场景,您编写一个 API 供其他人编写的软件使用。只有在您的 API 的新版本发布后,他们才能开始开发新版本的软件。但他们不希望现有应用程序在适应您的新 API 时出现故障。
我想您可以发布一个其他人可以测试的测试版本,然后仅在每个人都迁移后才发布,但是这种策略不适用于许多用户。
通过对您的 API 调用进行版本控制,这些其他人的现有应用程序可以在他们开发适用于您的 API 的新版本的新版本时继续运行。
推荐阅读
- c# - c# asp.net mvc - 简化
- angular - 如何在其他组件中使用 sessionStorage.clear()?
- json - Yii2:如何从后端响应?
- jenkins - openshift jenkins中的交换内存问题使其变慢
- javascript - 以编程方式更改本机应用程序显示名称
- php - Symfony find user by role (JSON array Doctrine property)
- python - 使用 python 对数据框 pandas 进行分组
- json - jq 不区分大小写键过滤器
- angular - 试图理解这段代码: map((data: SearchResponse) => data && data.items || [])
- azure-active-directory - Azure AD:静默获取具有特定范围的令牌,但获取没有此范围的令牌