サンプル実装②

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をインクルード利用します。