如何进行REST Web服务url版本控制



我需要对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实现方面是如何工作的?

您可以遵循两种设计方法

  1. 假设你的更改是最小的,并且是代码的特定部分,例如,你有保险单应用程序,你正在将该应用程序升级到新版本,因为政府推出了一项影响调试的政策。并且您有计算调试的模块,然后您可以将版本作为参数传递。

    @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);
    }
    }
    
  2. 假设你的更改影响很大,你想引入新的模块,但很少有用户(传统)还没有完成更改,那么你可以用不同版本的创建一个单独的方法

    @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);
    }
    
    }
    

最新更新