サンプル実装②
package jp.test.sample;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
/**
* http://localhost:8080/sample/rest/hello/{message}
*/
@Path("shuttle")
public class TestShuttle {
@GET
@Path("/hello/{message}")
public String getDestination(@PathParam("message") String message) {
return "TEST's hello, " + message;
}
@GET
@Path("/bus")
public String getBusDestination() {
return "TEST, Get Method!";
}
@POST
@Path("/bus")
public String createBusDestination() {
return "TEST, Create Method!";
}
@PUT
@Path("/bus")
public String updateBusDestination() {
return "TEST, Update Method!";
}
@DELETE
@Path("/bus")
public String removeBusDestination() {
return "TEST, Remove Method!";
}
}
図の朱枠部分を追記。
追記した処理を呼び出す画面を、
WebContent直下に「test.html」として作成。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
TEST!
<form action="http://localhost:8080/sample/rest/shuttle/bus" method="get" id="getid">
</form>
<form action="http://localhost:8080/sample/rest/shuttle/bus" method="post" id="postid">
</form>
<form action="http://localhost:8080/sample/rest/shuttle/bus" method="put" id="putid">
</form>
<form action="http://localhost:8080/sample/rest/shuttle/bus" method="delete" id="deleteid">
</form>
...<p><input type="submit" value="GET送信する" form="getid"></p>
...<p><input type="submit" value="POST送信する" form="postid"></p>
...<p><input type="submit" value="PUT送信する" form="putid"></p>
...<p><input type="submit" value="DELETE送信する" form="deleteid"></p>
</body>
</html>
これをサーバー配置して動かしてみるね。
上から順にボタン押下してみると、
GET、POSTはそれぞれのHTTPメソッドのアノテーションで
修飾しているメソッドを実行している。
けれど、PUT、DELETEはNG(ダメ)でした。
Getで送信しちゃってるんだよ。
Jerseyは、HTTP1.1の、GET、POST、PUT、DELETEの
4メソッドを意識しているんでしょうが、
HTTPプロトコル的にはGET、POSTしかないらしいんですね~。
RESTfulっぽくしたいのだけれど、どうしたものか。。。
この問題を解決するために
JavaScript の Ajax を使いたいので、
次回のRESTサービス実装では、
HTML画面に、jQueryをインクルード利用します。




