16

我正在使用构建REST网络应用程序Netbean 7.1.1 Glassfish 3.1.2

我有 2 个网址:

"http://myPage/resource/getall/name"  (get some data by name)

"http://myPage/resource/getall" (get all data)

当客户端使用第一个 URL 发送请求时,会调用下面的 servlet 并执行一些处理。

@Path("getall/{name}")
@GET
@Produces("application/json")
public Object Getall(@PathParam("name") String customerName) {
      //here I want to call SQL if customerName is not null. is it possible???
}

但我也想要第二个 URL 来调用这个 servlet。

我以为 servlet 会被调用,我可以检查 customerName == null 然后调用不同的 SQL 等等。

但是当客户端使用第二个 URL(即没有路径参数)发送请求时,不会调用 servlet,因为 URL 没有 {name} 路径参数。

不能调用第二个 URL 并调用上面的 servlet 吗?

我能想到的一种选择是使用query parameter

http://myPage/resource/getall?name=value

也许我可以解析它,看看是否"value"为空,然后采取相应的行动..

4

2 回答 2

33

你可以为你的路径参数指定一个正则表达式(参见2.1.1.@ Path )。

如果你使用.*匹配空和非空名称所以如果你写:

@GET
@Path("getall/{name: .*}")
@Produces("application/json")
public Object Getall(@PathParam("name") String customerName) {
      //here I want to call SQL if customerName is not null. is it possible???
}

它将匹配“http://myPage/resource/getall”和“http://myPage/resource/getall/name”。

于 2012-04-14T08:12:14.247 回答
-2
@GET
@Path("getall{name:(/[^/]+?)?}")
@Produces("application/json")
public Object Getall(@PathParam("name") String customerName) {
  //here I want to call SQL if customerName is not null. is it      

 possible??? 
  }
于 2015-03-16T06:23:43.160 回答