当可选参数为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它。
- 对于ReentrantLock,实际使用lockInterruptibly
- 缺少`server’JVM(Java \ jre7 \ bin \ server \ jvm.dll。)
- 如何在线程中有一个有效的循环
- 这是否可以使用javascript来调用java方法?
- 将messageSource移动到applicationContext会导致默认的messageSource在dispatcher-servlet上下文中不可见
- 如何在同一个Spring启动应用程序中配置neo4j和cassandra存储库
- @BatchSize使用聪明还是愚蠢?
- JavaFX 2调试css
- 如何在Intellij IDEA中构建和运行Storm拓扑