选项路径参数在Jersey中返回404

时间:2013-09-20 17:54:45

标签: jersey

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

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

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

例如,这失败了404:

http://hostname/create/abc1/abc2

并以200:

成功
http://hostname/create/abc1

我对泽西岛无法匹配的可选路径做错了什么?

1 个答案:

答案 0 :(得分:3)

虽然我确定这个问题有解决方案,但我通过重载方法来解决它,以便将一个param发送到一个接收方法,并将两个params发送到另一个。然后他们都交给处理程序方法,以便减少代码重复。 这可以使用简单的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)
}

希望这有助于其他人遇到同样的问题。