REST如何通过空路径参数?(REST how to pass empty path paramet

2019-07-28 23:59发布

我建立REST使用的Web应用程序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将被调用,我可以检查客户名称== NULL,然后调用不同的SQL等。

但是,当客户端发送使用第二URL请求(即,没有路径参数)中,servlet没有被调用,因为该URL不具有{名称}路径参数。

这难道不是可以调用第二URL并且调用上方的Servlet?

一种替代方法我能想到的就是使用query parameter

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

也许我可以分析一下,看看是否"value"为null,则采取了相应的行动..

Answer 1:

你可以指定你的路径参数正则表达式(参见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 /资源/ GETALL” 和 “HTTP:// MYPAGE /资源/ GETALL /名称”。



Answer 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??? 
  }


文章来源: REST how to pass empty path parameter?
标签: java rest jax-rs