REST風サービスをJavaEEで構築する方法05(パラメータの受け取り編)

今回はRESTクライアントからREST風サービスへパラメータを送信する方法を紹介する。
具体的には「@QueryParam」「@FormParam」「@PathParam」を使用し、受け取るパラメータを定義する。

<前提条件>
下記の記事を読了していること。
REST風サービスをJavaEEで構築する方法01(導入編)
REST風サービスをJavaEEで構築する方法02(雛形プロジェクト編)
REST風サービスをJavaEEで構築する方法03(RESTクライアント編)
REST風サービスをJavaEEで構築する方法04(各メソッド編)

<全体像から見た位置づけ>
主にApi層の追加編集を行う。機能確認のためにRESTクライアントの追加編集も行う。

<手順概要>
1.Api層の追加実装を行う
2.index.htmlファイルの追加実装を行う

<手順詳細>
1.Api層の追加実装を行う
REST風サービスをJavaEEで構築する方法04(各メソッド編)で編集した「SampleApi」クラスを追加編集し、「@QueryParam」「@FormParam」「@PathParam」を使用して、受け取るパラメータを定義する。

package lab.moonmt.SampleRest.api;

import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
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;
import javax.ws.rs.QueryParam;

@Path("sampleApi")
public class SampleApi {
    
    @GET              
    @Path("getSample")
    public String getSampleMethod(
            @QueryParam("id")   String id,      //...(1)
            @QueryParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
                        
        return "Hello REST world(GET)" + id + name;
    }
    
    @POST
    @Path("postSample")
    public String postSampleMethod(
            @FormParam("id")   String id,      //...(2)
            @FormParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
        
        return "Hello REST world(POST)" + id + name;
    } 
    
    @PUT
    @Path("putSample")
    public String putSampleMethod(
            @FormParam("id")   String id,      //...(3)
            @FormParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
                        
        return "Hello REST world(PUT)" + id + name;
    }
    
    @DELETE
    @Path("deleteSample/{id}")                //...(4)
    public String deleteSampleMethod(
            @PathParam("id")   String id      //...(5)
    ){
        
        System.out.println("id:" + id);
                        
        return "Hello REST world(DELETE)" + id;
    }
}


ソースコード解説

番号 説明
(1) GETメソッドでパラメータを受け取る場合は「@QueryParam」を使用して定義する。
(2) POSTメソッドでパラメータを受け取る場合は「@FormParam」を使用して定義する。
(3) PUTメソッドでパラメータを受け取る場合は「@FormParam」を使用して定義する。
(4) DELETメソッドでパラメータを受け取る場合は、前準備として「@Path」に{}でパラメータ名を定義する。
(5) DELETメソッドでパラメータを受け取る場合は、「@Path」で定義したパラメータ名を「@PathParam」を使用して定義する。

2.index.htmlファイルの追加実装を行う
REST風サービスをJavaEEで構築する方法04(各メソッド編)で編集した、index.htmlファイルを追加編集する。

<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <!-- jQueryライブラリの読み込み -->
        <script src='js/libs/jquery-1.11.2.min.js'></script>
        
        <!-- RESTクライアントの記述 -->
        <script>
             $(function(){
                 
                $('#btnGet').on('click', function(){    
                     $.ajax({
                       type: "GET",
                       url: "http://localhost:8080/SampleRest/webresources/sampleApi/getSample",
                       data: {"id":"0001","name":"GET_param"},      //...(1)
                       success: function(data){ 
                           alert(data);
                       }
                    });
                });
                
                $('#btnPost').on('click', function(){    
                     $.ajax({
                       type: "POST",
                       url: "http://localhost:8080/SampleRest/webresources/sampleApi/postSample",
                       data: {"id":"0002","name":"POST_param"},    //...(2)
                       success: function(data){ 
                           alert(data);
                       }
                    });
                });
                
                $('#btnPut').on('click', function(){    
                     $.ajax({
                       type: "PUT",
                       url: "http://localhost:8080/SampleRest/webresources/sampleApi/putSample",
                       data: {"id":"0003","name":"PUT_param"},    //...(3)
                       success: function(data){ 
                           alert(data);
                       }
                    });
                });
                
                $('#btnDelete').on('click', function(){    
                     $.ajax({
                       type: "DELETE",
                       url: "http://localhost:8080/SampleRest/webresources/sampleApi/deleteSample/0004",    //...(4)
                       success: function(data){ 
                           alert(data);
                       }
                    });
                });
                
             });
        </script>
        
    </head>
    <body>
        <input type="button" value="GETメソッド"    id="btnGet"    /><br>
        <input type="button" value="POSTメソッド"   id="btnPost"   /><br>
        <input type="button" value="PUTメソッド"    id="btnPut"    /><br>
        <input type="button" value="DELETEメソッド" id="btnDelete" />
    </body>
</html>


ソースコード解説

番号 説明
(1) 送信するパラメータを「名前」「値」の組み合わせで指定している
(2) 送信するパラメータを「名前」「値」の組み合わせで指定している
(3) 送信するパラメータを「名前」「値」の組み合わせで指定している
(4) 送信するパラメータをURLの末尾に指定している

<動作確認>
プロジェクトを実行し、ブラウザに表示されたボタンを押下すると、送信したパラメータ値を含むメッセージがダイアログに表示される事を確認する。

※【POSTメソッド】ボタンを押下した場合の表示例

Enjoy Programing!!


<関連記事>
REST風サービスをJavaEEで構築する方法01(導入編)
REST風サービスをJavaEEで構築する方法02(雛形プロジェクト編)
REST風サービスをJavaEEで構築する方法03(RESTクライアント編)
REST風サービスをJavaEEで構築する方法04(各メソッド編)
・REST風サービスをJavaEEで構築する方法05(パラメータの受け取り編)[本記事]
REST風サービスをJavaEEで構築する方法06(JSON返却編1)
REST風サービスをJavaEEで構築する方法07(JSON返却編2)
REST風サービスをJavaEEで構築する方法08(Logic層編)
REST風サービスをJavaEEで構築する方法09(DB接続設定編)
REST風サービスをJavaEEで構築する方法10(DAO層編1)
REST風サービスをJavaEEで構築する方法11(DAO層編2)
REST風サービスをJavaEEで構築する方法12(DAO層編3)
REST風サービスをJavaEEで構築する方法13(SQLログ編)


<お勧め書籍>

わかりやすいJavaEEウェブシステム入門
JavaEEに関して基本的なことが分かり易く記述されている。
JavaEEに関する最初の1冊としてお勧めである。
Beginning Java EE 6 GlassFish 3で始めるエンタープライズJava
「金魚本」の愛称を持つJavaEEの教科書的な書籍である。
JavaEEを腰を据えて学びたい人にお勧めする1冊!!