服务与API设计全解析
一、API版本控制
1.1 URI中包含版本号
API版本号可以作为查询字符串的参数,也可以成为URI路径的一部分。以下是一些带有版本号的URI示例:
- http://localhost:3000/api/v1/users/1
- http://localhost:3000/users/1?version=1
- http://localhost:3000/api/v2/users/1
这些示例展示了ID为1的特定用户对象的URI。前两个URI指向API版本1中ID为1的用户,第三个示例使用了API版本2。需要注意的是,不同版本的API可能会有重大变更,比如响应中数据的增减,或者验证请求的底层业务逻辑的修改。
将版本号放在查询字符串中的一个优点是可以将其设为可选参数。如果客户端未指定版本,可能会获取到最新版本。但这也会带来问题,因为更新服务可能会使那些未在请求中明确设置版本号的客户端出现故障。
理想情况下,不需要长时间运行多个版本的服务。一旦新的服务版本部署并运行,应尽快更新服务客户端以淘汰旧版本。对于外部API,这可能不是一个可行的选择,例如亚马逊已经在一段时间内同时运行SimpleDB和SQS API的多个版本。内部API可能只需要在服务和客户端进行滚动部署期间运行多个版本。不过,在服务和客户端更新之间设置较长的延迟时间是个不错的主意。
1.2 使用Accept头进行版本控制
除了在URI中包含版本号,另一种指定API版本的方法是在每个请求的Accept头中包含版本信息。这意味着为API的每个版本定义一个新的MIME类型。以下是请求版
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



