我需要为我的RESTEasy Web方法的@Path
语句添加正则表达式,以允许以下两种类型的URL连接到Web方法:
...其中id ='r2lXIcBfNfnp2yOK',版本可以是'1'或'1.0.0'。我怎么能这样做?
到目前为止我的方法,它接受版本为'1.0.0'而不是'1':
@GET()
@Produces("application/x-protobuf")
@Path("/Things/{id}.{version:
(([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}")
public String getThing(
@PathParam("id") String id,
@PathParam("version") @DefaultValue("1.0.0") String version,
@Context final HttpServletResponse response)
{
//.... (rest of the method, irrelevant
}
我可以在上面的@Path语句中添加另一个正则表达式,还允许'1'作为版本吗?
我试过这个:
@Path("/{id}.{version: (([0-9\\*^\\.])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
......但这不起作用。
我也试过这个:
@Path("/{id}.{version: (([0-9\\*])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
...但是当我传入版本“1.0.0”时它只会切断第一个数字,使其变为“0.0”。
提前感谢您的帮助。
答案 0 :(得分:1)
使用\\d+((\\.\\d+){2})?
允许<number>
或<number>.<number>.<number>
\\d+
允许一个或多个数字
(\\.\\d+){2}
允许 a的模式。然后是一个或多个数字出现两次
以下?
使第二个模式可选