删除" /"当可选参数为null时从api调用

时间:2014-10-15 08:16:56

标签: java jersey

我们正在使用 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如果可选参数不存在。

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.
  }

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

我遵循了这个link,但是当前面的参数长度超过1时它没有用。

请,建议我最好的方式。

1 个答案:

答案 0 :(得分:2)

your reference,你试过这个:

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

这应该有效,在一个数组中提供所有参数。

编辑:我已更新搜索字符串并在本地安装中验证。