REST風サービスをJavaEEで構築する方法07(JSON返却編2)

今回は前回に引き続き、REST風サービスからRESTクライアントへJSON形式を返却する方法を紹介する。
前回はJSON形式のデータを生成する前準備としてMapを利用したが、今回はより実践的なDTO(Data Transfer Object)を利用する方法を紹介する。

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

<全体像から見た位置づけ>
DTOクラスを作成する。また、Api層の追加編集を行う。

<手順概要>
1.DTOクラスを作成する
2.Api層の追加編集を行う

<手順詳細>
1.DTOクラスを作成する
プロジェクトツリー上の「ソース・パッケージ」を右クリックし、[新規]>[Javaクラス]を選択する。


表示されたダイアログのクラス名に「SampleDto」(※)・パッケージ名に「lab.moonmt.SampleRest.dto(※)を設定し、【終了(F)】ボタンを押下する。
(※)任意の名前をつけることができる。

クラスが作成されたことを確認する。

作成されたクラスファイルを編集する。
JSON形式のデータとして返却したい、データ名に対応した変数名を定義する。変数の型は返却したいデータの型に対応させる。

package lab.moonmt.SampleRest.dto;

public class SampleDto {
    
    public String status;
    public String id;
    public String name;
}

2.Api層の追加編集を行う
REST風サービスをJavaEEで構築する方法06(JSON返却編1)で編集した「SampleApi」クラスを追加編集する。

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;
import lab.moonmt.SampleRest.dto.SampleDto;
import net.arnx.jsonic.JSON;

@Path("sampleApi")
public class SampleApi {
    
    @GET              
    @Path("getSample")
    public String getSampleMethod(
            @QueryParam("id")   String id,
            @QueryParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
        
        SampleDto dto = new SampleDto();        //...(1)
        dto.status = "success";
        dto.id     = id;
        dto.name   = name;
                        
        return JSON.encode(dto);                //...(2)
    }
    
    @POST
    @Path("postSample")
    public String postSampleMethod(
            @FormParam("id")   String id,
            @FormParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
        
        SampleDto dto = new SampleDto();        //...(1)
        dto.status = "success";
        dto.id     = id;
        dto.name   = name;
                        
        return JSON.encode(dto);                //...(2)
    } 
    
    @PUT
    @Path("putSample")
    public String putSampleMethod(
            @FormParam("id")   String id,
            @FormParam("name") String name
    ){
        
        System.out.println("id:" + id + ",  name:" + name);
                        
        SampleDto dto = new SampleDto();        //...(1)
        dto.status = "success";
        dto.id     = id;
        dto.name   = name;
                        
        return JSON.encode(dto);                //...(2)
    }
    
    @DELETE
    @Path("deleteSample/{id}")
    public String deleteSampleMethod(
            @PathParam("id")   String id
    ){
        
        System.out.println("id:" + id);
                        
        SampleDto dto = new SampleDto();        //...(1)
        dto.status = "success";
        dto.id     = id;
                        
        return JSON.encode(dto);                //...(2)
    }
}


ソースコード解説

番号 説明
(1) DTOクラスをインスタンス化し、DTOの要素に返却したい値を格納する。
(2) JSONICライブラリの「JSON」クラスの「encode」メソッドを使用して、DTOJSON形式に変換し返却する。

<動作確認>
プロジェクトを実行し、ブラウザに表示されたボタンを押下すると、JSON形式のデータがダイアログに表示されることを確認する。

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

<捕捉説明>
今回作成したDTOクラスは単純なものであったが、入れ子構造やリスト構造を持ったDTOであっても、JSONICライブラリを使用すればJSON形式に変換することが可能である。

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冊!!