16

RESTを使用してWebアプリを構築していますNetbean 7.1.1 Glassfish 3.1.2

私は2つのURLを持っています:

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

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

クライアントが最初の URL を使用してリクエストを送信すると、以下のサーブレットが呼び出され、何らかの処理が行われます。

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

しかし、このサーブレットを呼び出す 2 番目の URL も必要です。

サーブレットが呼び出されると思ったので、 customerName == null を確認してから、別の SQL などを呼び出すことができます。

しかし、クライアントが 2 番目の URL を使用して (パス パラメータなしで) リクエストを送信すると、URL に {name} パス パラメータがないため、サーブレットは呼び出されません。

2 番目の URL を呼び出して上記のサーブレットを呼び出すことはできませんか?

私が考えることができる1つの代替手段は、次を使用することquery parameterです:

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

多分私はそれを解析して"value"null かどうかを確認し、それに応じて行動を起こすことができます..

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 に答える