我需要版本REST Web服务API。我已经查看了Stack Overflow下的几篇文章。我发现有三种方法:网址版本控制,自定义请求标头和接受标头。我正准备进行URL版本控制。
我的网址是这样的:
http://localhost:8080/api/svcs/1.0/usrLocation?1234
现在我的问题是如何对上述网址进行版本控制。我从服务器端代码中找不到任何实际示例。我能够找到理论和网址,例如:
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实现方面起作用?
您可以遵循两种设计方法
假设您所做的更改很小,并且在代码的特定部分,例如您有保险单应用程序,并且您正在将应用程序升级到新版本,因为govt引入了影响调试的策略。并且您具有用于计算调试的模块,那么您可以将版本作为参数传递。
@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);
}
}