新的API版本是否也应支持旧版本的所有api? [设计问题]

时间:2018-11-16 07:18:47

标签: rest django-rest-framework api-design

我在base/api/v1/end-point1base/api/v1/end-point2base/api/v1/end-point3等处公开了一组api。这些基本上是v1 api。

现在,我们继续公开v2 API。在这个新的api版本中,我们将添加一些新的api,重构一些现有的(v1)api,并且某些api将保持不变。

所以我的问题是我也应该在v2中公开所有v1不变的api吗?


示例:

API V1:

api / v1 / users-保持不变

api / v1 / feature1-将会更改

其他端点...

API V2:

api / v2 / feature1-重构功能

api / v2 / feature2-新添加

api / v2 / users-我也应该公开吗?


我认为:

我不应该:因为它是相同的

我应该:因为如果不公开,客户端将需要对不同的资源使用不同的api版本(端点)。

你在做什么?您怎么看?任何参考和最佳实践资源将不胜感激。

让我知道这个问题是否不适合该平台。我很乐意在适当的地方问这个问题。

1 个答案:

答案 0 :(得分:2)

是的

每个版本应独立于其他版本。这样做的理由是,一旦将某个版本的API公开发布,它的行为将一直相同,直到被弃用为止。这样可以确保提供的API稳定且不会因其他响应而中断。从使用该API的最终开发人员的角度来看,它也是干净的,不会混淆记住多个版本。

我们通常有SEMVER文档中提到的多个版本

  

给出版本号MAJOR.MINOR.PATCH,增加:

     

更改不兼容的API时的主要版本

     

以向后兼容的方式添加功能时的版本,并且

     

进行向后兼容的错误修复时的PATCH版本。