我正在努力满足三种类型的 REST url:
url/detail/3
(仅限整数)url/detail/hello
(仅限字符串)url/detail/3/1d
对于 URL 1 和 3,我使用method1
的是 URL 2 method2
。
问题 1: 1 和 2 的所有请求类型仅与方法 2 匹配。尽管我在方法 1 中为具有整数的查询指定了整数模式。
问题 2:要使用可选参数(如 3 中),我使用的是方法 1,因为球衣没有为可选参数提供任何选项。但是 url 类型url/detail/3/1d
永远不会按照方法 1 中的指定匹配。
请帮助我理解我做错了什么,因为我是球衣的新手。
@GET
@Path("/detail/{id: \\d+}/{time-period:(/time-period/[^/]+?)?}")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_JSON)
public JResponse method1(
@Context HttpHeaders headers,
@PathParam("id") String id,
@PathParam("time-period") String timePeriod) {
if(timePeriod == null || timePeriod.equals(""))
{
//code
}
else
//code
}
@GET
@Path("/detail/{name}")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_JSON)
public JResponse method2(
@Context HttpHeaders headers, @PathParam("name") String name) {
//code
}