我从以前的开发人员继承了开发中的API,该开发人员使用以下API uri模式进行版本控制:
http://localhost:8080/api/v1/users/
这是API版本控制的正确格式吗?例如,如果客户端需要用户API的v2,那么以下uri格式似乎表示用户存在API的v2,但不一定表示所有实体都存在API的v2:
http://localhost:8080/api/users/v2
所以看起来第二个uri会更精细。这些模式中的一种是否比另一种更正确或更常用?
答案 0 :(得分:3)
我使用前者:/api/v1/users/
因为:
/api/v1/...
之后的所有请求路由到旧版本并{{1到新版本。如果/api/v2/...
位于URI的末尾,那么配置路由将是一件痛苦的事。v2
状态的第二个快照,那么可能是User 123
并获得第300个快照,然后/api/users/123/v2
- 将API版本信息放在那里这让人不清楚。/api/users/123/v300
表示" API版本1下的用户" - 而不是/api/v1/users
,在这种情况下,它变得不清楚(" API的版本1用户"?" API下的用户名为' v1'&# 34;等)。还有其他方法需要考虑:如果您的版本控制仅涉及DTO的不同架构版本,而基础数据和业务逻辑保持不变,那么您可以让客户端指定DTO架构版本他们想要一个查询字符串值:
/api/users/v1