休息WebServices版本控制

时间:2016-08-10 13:24:37

标签: java jersey jax-rs

我已实施版本化,如下所示。目前我正在以这种方式实施它

@GET
@Path("/{id}")
@Produces("application/v1+json;version=1")
public TrackV1 getV1(@PathParam("id") int id) String version) {
    return new TrackV1("Version=1", "Version=1", "2:30", 1941);
}

@GET
@Path("/{id}")
@Produces("application/v2+json;version=2")
public TrackV1 getVa1(@PathParam("id") int id) {
    return new TrackV1("Version=2", "Version=2", "2:30", 2941);
}

但我需要将其改为以下实施: -

@GET
@Path("/{id}")
@Produces("application/json;version=1")
public TrackV1 getV1(@PathParam("id") int id) String version) {
    return new TrackV1("Version=1", "Version=1", "2:30", 1941);
}

@GET
@Path("/{id}")
@Produces("application/json;version=2")
public TrackV1 getVa1(@PathParam("id") int id) {
    return new TrackV1("Version=2", "Version=2", "2:30", 2941);
}

所以任何帮助如何在Spring或Jax-Rs和Jersey中实现。

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案: -

@GET
@Produces("application/xml;version=1")
public Response getAddonListVersion1(@Context UriInfo uriinfo) {
    logger.debug("START:Addons Dummy Service Implementation");

    return Response.ok("Version 1", "application/xml").build();
}

@GET
@Produces("application/xml;version=2")
public Response getAddonListVersion1(@Context UriInfo uriinfo) {
    logger.debug("START:Addons Dummy Service Implementation");

    return Response.ok("Version 2", "application/xml").build();
}

使用Jersey它给出了问题,但当你使用apache-cxf ws实现或使用RestEasy时,你可以轻松地进行这些类型的版本控制。