◆ SpringBoot+gradle REST+JSON形式のAPIを呼び出してみる


★ はじめに

環境構築メモにJavaのバージョンを書き忘れました。Java8になります。
こちらの記事も自分用のメモになります。

★ HelloWorld

最初なのでまず、画面に「HelloWorld」を表示させることから試してみます。
パッケージ構成は以下のようにしました。

SampleProjectApplication.javaと同じ階層にアプリケーション層としてappを作成。
さらにその下にcontrollerを作成しています。

RestApiController.java
package com.example.sample.app.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("api/sample")
public class RestApiController {

    @RequestMapping(value = "/hello")
    public String index() {
        return "Hello World!";
    }
}

プロジェクトを右クリック ⇒ [実行(R)][4 Spring Boot アプリケーション] の順に選択。
コンソールにログが出力されます。

http://localhost:8080/api/sample/helloにアクセスします。

無事表示されました。

@RequestMappingの()内の記載ですが、valueを省略したり、pathと記載してもOKみたいですね。

★ HTTPメソッドの実装

HTTPメソッドがGETで、投げると誕生日石(月、名前、色)の情報を返却するメソッドを実装します。
@RequestMappingRequestMethodGETを指定します。

RestApiController.java
package com.example.sample.app.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.sample.app.resource.BirthStone;

@RestController
@RequestMapping("api/sample")
public class RestApiController {

    @RequestMapping(value = "/getBirthStone", method = RequestMethod.GET)
    @ResponseBody
    public BirthStone getBirthStone() {
        BirthStone birthStone = new BirthStone("2月", "アメジスト", "紫");
        return birthStone;
    }
}

appの下にresourceを作成し、誕生日石の情報を返却するためにBirthStoneクラスを作成します。

BirthStone.java
package com.example.sample.app.resource;

import java.io.Serializable;

public class BirthStone implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 月 */
    private String month;

    /** 名前 */
    private String name;

    /** 色 */
    private String color;

    public BirthStone (String month, String name, String color) {
        this.month = month;
        this.name = name;
        this.color = color;
    }

    // getter/setter記載略
}

Advanced REST ClientでAPIを呼び出した結果。

レスポンスが得られました。

HTTPメソッドがPOSTの場合は、RequestMethod=POSTと記述します。