【发布时间】:2016-01-12 22:06:32
【问题描述】:
我有一个 REST 服务,版本 v1 在生产中运行良好。现在我需要制作版本 v2 url,因为响应格式发生了变化,所以我们不想影响当前使用 v1 url 的客户。我们将使用版本 v2 url 返回一些其他对象,而不是使用 ClientResponse 对象。
以下是我当前的设计,@Path 注释中提供了该版本。这是由离开我们团队的其他人完成的。
@Component
@Scope("request")
@Path("/abc/hello/v1")
public class ClientService {
// ... some variables
@GET
@Path("/json/line")
@Produces(MediaType.APPLICATION_JSON)
public ClientResponse getLineData(@Context UriInfo uriInfo) {
}
}
在这里设计版本 v2 url 的最佳方式是什么?我应该像这样创建一个新课程并将@Path 设置为@Path("/abc/hello/v2") 并复制粘贴其中的所有内容吗?还是我应该创建一些抽象类并让ClientServiceV1 扩展该抽象类,然后让ClientServiceV2 也扩展该抽象类?我应该如何进行?
【问题讨论】:
-
我看不出这里有一个通用的基类有什么好处;而是将 v1 和 v2 之间的所有公共部分移动到您委派给的某个共享类,并使服务本身尽可能小。
标签: java rest versioning