Rest 什么是正确的api uri版本格式?
我从以前的开发人员那里继承了一个开发中的API,该开发人员使用以下API uri模式进行版本控制: 这是API版本控制的正确格式吗?例如,如果客户机需要v2用户API,则以下uri格式将显示为指示用户存在v2 API,但不一定所有实体都存在v2 API:Rest 什么是正确的api uri版本格式?,rest,api,web-services,Rest,Api,Web Services,我从以前的开发人员那里继承了一个开发中的API,该开发人员使用以下API uri模式进行版本控制: 这是API版本控制的正确格式吗?例如,如果客户机需要v2用户API,则以下uri格式将显示为指示用户存在v2 API,但不一定所有实体都存在v2 API: 因此,第二个uri看起来更细粒度。这些模式中的一种比另一种更正确还是更常用?我会使用前者:/api/v1/users/,因为: 如果新版本的API作为web应用程序的单独实例公开,那么配置站点范围的路由就容易多了:只需将/API/v1/.
因此,第二个uri看起来更细粒度。这些模式中的一种比另一种更正确还是更常用?我会使用前者:
/api/v1/users/
,因为:
- 如果新版本的API作为web应用程序的单独实例公开,那么配置站点范围的路由就容易多了:只需将
之后的所有请求路由到旧版本,并将/API/v1/..
路由到新版本。如果/API/v2/..
位于URI的末尾,那么配置路由将是一件痛苦的事情v2
- 新版本的API可能会使更高级别的API过时,例如,如果“用户”被替换为“身份”,该怎么办?那么“v2”后缀就没有意义了
- 资源路径是层次结构-在资源后面有一个版本指示符应用于引用该资源的版本,例如,如果您想获取用户123的状态的第二个快照,然后可能是
,要获得第300个快照,那么/api/users/123/v2
——将api版本信息放在那里会使这一点变得不清楚/api/users/123/v300
- 资源路径应该按照“从最小到最具体”的顺序从左到右。最后的API版本打乱了逻辑顺序
- 类似地,
表示“api版本1下的用户”,而不是/api/v1/users
,在这种情况下,它变得不清楚(“api版本1用户”?“api下名为“v1”的用户?”,等等)/api/users/v1
GET /api/users/123?dtoVersion=1
GET /api/users/123?dtoVersion=2
我会使用前者:
/api/v1/users/
,因为:
- 如果新版本的API作为web应用程序的单独实例公开,那么配置站点范围的路由就容易多了:只需将
之后的所有请求路由到旧版本,并将/API/v1/..
路由到新版本。如果/API/v2/..
位于URI的末尾,那么配置路由将是一件痛苦的事情v2
- 新版本的API可能会使更高级别的API过时,例如,如果“用户”被替换为“身份”,该怎么办?那么“v2”后缀就没有意义了
- 资源路径是层次结构-在资源后面有一个版本指示符应用于引用该资源的版本,例如,如果您想获取用户123的状态的第二个快照,然后可能是
,要获得第300个快照,那么/api/users/123/v2
——将api版本信息放在那里会使这一点变得不清楚/api/users/123/v300
- 资源路径应该按照“从最小到最具体”的顺序从左到右。最后的API版本打乱了逻辑顺序
- 类似地,
表示“api版本1下的用户”,而不是/api/v1/users
,在这种情况下,它变得不清楚(“api版本1用户”?“api下名为“v1”的用户?”,等等)/api/users/v1
GET /api/users/123?dtoVersion=1
GET /api/users/123?dtoVersion=2