当可选参数为null时,从api调用中删除“/”

我们使用RESTful Web Services(Jersey)对java进行API调用。 虽然API需要可选参数,但我们这样做:

api-interface/user/userid/9000/companyid/90909/{optionalparameter*} 

当没有可选参数时,我们必须调用此api:

 api-interface/user/userid/9000/companyid/90909/ 

需要的是:

情况:1如果存在可选参数

 api-interface/user/userid/9000/companyid/90909/name/john/address/MA/age/34 

情况:2如果Optional参数不存在。

 api-interface/user/userid/9000/companyid/90909 

我目前的实施是:

 @GET @Path("user/companyid/{companyid}/userid/{userid}/{optionalparameter:.*}") @Produces(MediaType.APPLICATION_JSON) public Response getUserList(@PathParam("companyid") String companyId, @PathParam("userid") String userId, @PathParam("optionalparameter") String syncDate) throws BadRequestException, InternalServerException { //parsing the param. } 

在上面的代码中,我需要添加尾随“/”但我正在寻找删除这个尾随“/”的方法,如果有人不想传递这些参数。

我按照这个链接,但它没有工作,而前面的参数的长度超过1。

拜托,建议我最好的方法。

看看你的参考 ,你试过这个:

 @Path("userid/{userid}/companyid/{companyid}{optparam:(/[^/]+?)*}") public Response getLocation( @PathParam("userid") int userid, @PathParam("companyid") int companyid, @PathParam("optparam") String optparam) { String[] params = parseParams(optparam); ... } private String[] parseParams(String params) { if (params.startsWith("/")) { params = path.substring(1); } return params.split("/"); } 

这应该工作,为您提供单个数组中的所有参数。

编辑 :我已更新搜索字符串并在本地安装上validation它。