【发布时间】:2016-01-30 22:48:07
【问题描述】:
我有一个为多个客户端提供服务的 Rails 后端:
- Angular JS 应用程序
- iOS 应用
起初,我只有 iOS 应用程序,并在向客户端带来重大更改时使用 Rails 中的经典 API 版本控制(将我的版本命名为 v1、v2 等)。
当我们提出 Angular 前端时,我们需要一个特定的 API,所以我做了一个我只会与 Angular 一起使用的新版本(比如说v5)。
此时,v1 到 v4 专用于 iOS,v5 专用于 Angular。
显然,我可以同时更新我的后端和我的 Angular API,因为每次访问网站时,两者都会提供给客户端。因此,不需要对 Angular API 进行版本控制。
但是,我正需要更新我的 iOS API,它开始变得非常错误:v1..v4 用于 iOS,v5 用于 Android。所以假设的下一个 iOS API 应该是...v6?绝对错了。
我想知道是否可以将 API 版本命名为angular,感谢answer on SO,我明白为什么这是不可能的。我将为我的案例引用有趣的部分:
Ryan Bigg 写道:
我不知道如何让
/api/asdf/users匹配,因为您如何确定这是否应该是对/api/<resource>/<identifier>或/api/<version>/<resource>的请求?
现在你更了解我的情况了,问题来了。
问题
我应该如何管理多个 API,但它们并不像版本?
是否可以细分 API 版本?喜欢:
api/angular/v1-
api/ios/v5(也将v1..v4移动到api/ios/) api/android/v1
是否有任何最佳做法可以做到这一点?还是我应该只使用当前的 API 版本控制系统,知道哪个版本对应哪个客户端?
【问题讨论】:
标签: ruby-on-rails api routes versioning