web-dev-qa-db-ja.com

REST空のパスパラメータを渡す方法は?

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

私は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であるかどうかを確認し、それに応じてアクションを実行することができます。

13
Meow

パスパラメータに正規表現を指定できます( 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」の両方に一致します。

29
andih