JavaでRestfulなサーバを実装するためのライブラリである
Jerseyを触ってみました。
アノテーションを利用することによって、URLとJavaのメソッドの呼び出しを簡単に実装できるようになってます。
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
@Path("sample/{samplePathParam}")
public class Main {
@Path("get1")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get1(
@DefaultValue("2") @QueryParam("testInt") int testInt,
@DefaultValue("true") @QueryParam("testBoolean") boolean testBoolean,
@DefaultValue("value") @QueryParam("testString") String testString) {
return String.valueOf(testInt) + ";" + String.valueOf(testBoolean)
+ ";" + String.valueOf(testString);
}
@Path("get2")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get2(
@PathParam("samplePathParam") String param) {
return param;
}
@Path("get3/{samplePathParamWithConstraint: [a-z]*}")
@GET
@Produces(MediaType.TEXT_PLAIN)
public String get3(
@PathParam("samplePathParam") String param1,
@PathParam("samplePathParamWithConstraint") String param2) {
return param1 + ":" + param2;
}
}
これに対して色々アクセスしてみました。
http://localhost:8080/SampleServer/webapi/sample/foo/get1?testInt=10&testBoolean=false&testString=hoge
=>10;false;hoge
get1以下のクエリストリングがjavaの引数に渡されています。
http://localhost:8080/SampleServer/webapi/sample/foo/get2
=>foo
@Path("sample/{samplePathParam}")で指定したsamplePathParamがget2の引数に引き継がれてます。
http://localhost:8080/SampleServer/webapi/sample/foo/get3/bar
=>foo:bar
@Path("sample/{samplePathParam}")で指定したsamplePathParamと@Path("get3/{samplePathParamWithConstraint: [a-z]*}")で指定したsamplePathParamWithConstraintがget3の引数に引き継がれてます。
アノテーションの使い方の詳細は公式ドキュメントがわかりやすいです。
参考文献
Chapter 3. JAX-RS Application, Resources and Sub-Resources