【Spark Framework】Spark Framework + GSONを使って REST API を作成する

■ はじめに

 Spark Frameworkで、REST API を作る。
レスポンスの JSON を作成するのに、以前、以下の関連記事で取り上げたGSONを使う。
https://blogs.yahoo.co.jp/dk521123/32813165.html

■ 前提条件

https://blogs.yahoo.co.jp/dk521123/37204914.html
のように設定されていること

■ 環境設定

 * 以下の「build.gradle」を参考に、GSONを追加し、
   Eclipseの対象プロジェクトを右クリックし、[Gradle]-[Refresh Gradle Project]を選択

build.gradle

dependencies {
    # 途中略

    compile 'com.sparkjava:spark-core:2.7.0'
    compile 'org.slf4j:slf4j-simple:1.7.25'
    compile 'com.google.code.gson:gson:2.8.2' # GSON の追加

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
}

■ サンプル

Person.java

package com.sample.spark.models;

public class Person {
  private long id;
  private String name;
  
  public Person(long id, String name) {
    this.id = id;
    this.name = name;
  }
  
  public long getId() {
    return id;
  }
  public void setId(long id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
}

HelloWorldRest.java

import static spark.Spark.get;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.sample.spark.models.Person;

import spark.Request;
import spark.Response;

public class HelloWorldRest {
  public static void main(String[] args) {
    Gson gson = new Gson();
    get("/", HelloWorldRest::getPeople, gson::toJson);
  }
  
  private static List<Person> getPeople(Request request, Response response) {
    List<Person> people = new ArrayList<>();
    people.add(new Person(1L, "Mike"));
    people.add(new Person(2L, "Tom"));
    people.add(new Person(3L, "Kevin"));
    return people;
  }
}

出力結果

ブラウザを立ち上げて、以下のURLにアクセスする
[[http://localhost:4567]]
[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"},{"id":3,"name":"Kevin"}]

関連記事

【Spark Framework】初期設定 ~ 環境構築(Gradle Project)からHello Worldまで / 新版 ~

https://blogs.yahoo.co.jp/dk521123/37204914.html

【Spark Framework】処理部分を分離させる

https://blogs.yahoo.co.jp/dk521123/36683099.html

Spark Framework + args4j を使ってコマンドライン引数から設定値を変更

https://blogs.yahoo.co.jp/dk521123/37207522.html

【Spark Framework】REST API + knockout.jsを使って データバインドする

https://blogs.yahoo.co.jp/dk521123/37208334.html

JavaJSONJSONライブラリ:GSONを用いた場合~

https://blogs.yahoo.co.jp/dk521123/32813165.html