JAX-RS @Path URIにマッチする例
JAX-RSでは、 `@ Path`を使用してURIパターンをJavaメソッドにバインドできます。どのように動作するかは、次の例を参照してください。
1.通常のURIマッチング
@Pathアノテーションと一致する通常のURIを参照してください。
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
@Path("/users")
public class UserRestService {
@GET
public Response getUser() {
return Response.status(200).entity("getUser is called").build();
}
@GET
@Path("/vip")
public Response getUserVIP() {
return Response.status(200).entity("getUserVIP is called").build();
}
}
URIパターン: ”
/users
”
getUser is called
URIパターン: ”
/users/vip
”
getUserVIP is called
2. URIマッチングとパラメータ
中括弧 “\ {“と中かっこ “}”内の値はパラメータを表し、 `@ PathParam`でアクセスできます。
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/users")
public class UserRestService {
@GET
@Path("{name}")
public Response getUserByName(@PathParam("name") String name) {
return Response.status(200)
.entity("getUserByName is called, name : " + name).build();
}
}
URIパターン: ”
/users/mkyong
”
getUserByName is called, name : mkyong
URIパターン: ”
/users/abcdefg
”
getUserByName is called, name : abcdefg
3. URIマッチングと正規表現
`@ Path`は正規表現と一致する複合URIを次の式でサポートします:
{" variable-name[":" regular-expression]"}
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/users")
public class UserRestService {
@GET
@Path("{id : \\d+}")//support digit only
public Response getUserById(@PathParam("id") String id) {
return Response.status(200).entity("getUserById is called, id : " + id).build();
}
@GET
@Path("/username/{username :[a-zA-Z][a-zA-Z__0-9]}")
public Response getUserByUserName(@PathParam("username") String username) {
return Response.status(200)
.entity("getUserByUserName is called, username : " + username).build();
}
@GET
@Path("/books/{isbn : \\d+}")
public Response getUserBookByISBN(@PathParam("isbn") String isbn) {
return Response.status(200)
.entity("getUserBookByISBN is called, isbn : " + isbn).build();
}
}
URIパターン: ”
/users/999
”
getUserById is called, id : 999
URIパターン: ”
/users/123456
”
getUserById is called, id : 123456
“[a-zA-Z][a-zA-Z
0-9]、最初の文字が必要[” a-zA-Z]”と一致しない”
/users/username/aaa
“、2文字目に”[a-zA-Z
0-9]”が必要です。
Could not find resource for relative :/users/username/aaa
URIパターン: ”
/users/username/a9
”
getUserByUserName is called, username : a9
URIパターン: ”
users/books/999
”
getUserBookByISBN is called, isbn : 999
ソースコードをダウンロードする
ダウンロードする – リンク://wp-content/uploads/2011/07/JAX-RS-Path-URI-Matching-Example.zip[JAX-RS-Path-URI- Matching-Example.zip](6 KB)