0

我正在尝试使用这样的路径,最后一个参数是可选的,这样如果它存在,它就会被使用,否则它只是设置为 null 或空。

@Path("/create/{param1}{param2:(/param2/[^/]+?)?}")

但是,当设置第一个静态参数时我得到一个 200,但是当设置第二个选项参数时我得到一个 404(未找到)。

例如,这会以 404 失败:

http://hostname/create/abc1/abc2

这成功了200:

http://hostname/create/abc1

我在 Jersey 无法匹配的可选路径上做错了什么?

4

1 回答 1

3

虽然我确信有解决这个问题的方法,但我通过重载方法解决了这个问题,以便将单个参数发送到一个接收方法,并将两个参数发送到另一个。然后他们都移交给处理程序方法,因此我们减少了代码重复。这使用简单的 java 重载来工作,并且不需要复杂的匹配语法,这将使以后的维护更容易。

@PUT
@Path("/create/{param1}")
public Response doThingMethod(@PathParam("param1") String param1){
    return passToHandler(param1, null)
}

@PUT
@Path("/create/{param1}/{param2}")
public Response doThingMethod(@PathParam("param1") String param1, @PathParam("param2") String param2){
    return passToHandler(param1, param2)
}

希望这可以帮助遇到同样问题的其他人。

于 2013-09-20T19:00:54.513 回答