我需要对RESTWeb服务API进行版本设置。我已经浏览了Stack Overflow下的几个帖子。我发现有三种方法:Url版本控制、自定义请求头和接受头。我正要进行URL版本控制。
我的URL是这样的:
http://localhost:8080/api/svcs/1.0/usrLocation?1234
现在我的问题是如何版本上面的网址。我没有从服务器端代码中找到任何实际的例子。我能够找到理论和URL像:
http://localhost:8081/api/svc/v1/ and blah blah..
我的jax-rs实现代码将是什么样子,实际概念将如何在服务器端实现?
我是这方面的初学者。我的JAX-RS实现是Apache CXF
我的代码:
@Get
@Path("/usrLocation")
@Produces (MediaType.APPLICATION_JSON)
public Response getUsrLocation(@QueryParam ("locId") String locId){
// logic
}
url http://localhost:8080/api/svcs/1.0/usrLocation?1234
需要如何更改为版本控制,以便在未来有所帮助,以及它在jax-rs实现方面是如何工作的?
您可以遵循两种设计方法
-
假设你的更改是最小的,并且是代码的特定部分,例如,你有保险单应用程序,你正在将该应用程序升级到新版本,因为政府推出了一项影响调试的政策。并且您有计算调试的模块,然后您可以将版本作为参数传递。
@Path("/svc") public class KPApiService { private final static Logger LOG = LoggerFactory.getLogger(KPApiService.class); @Path("/{version}/myapp") @GET public Response myApp(@PathParam("version")String version, @QueryParam("kpdata")String data){ LOG.debug("You and entered version {} and data {} ", version, data); } }
-
假设你的更改影响很大,你想引入新的模块,但很少有用户(传统)还没有完成更改,那么你可以用不同版本的创建一个单独的方法
@Path("/svc") public class KPApiService { private final static Logger LOG = LoggerFactory.getLogger(KPApiService.class); @Path("/1.0/myapp1") @GET public Response myApp1(@QueryParam("kpdata")String data){ LOG.debug("You and entered version v1 and data {} ", data); } @Path("/1.2/myapp1") @GET public Response myApp2(@QueryParam("kpdata")String data){ LOG.debug("You and entered version v2 and data {} ", data); } }