プログラマーの調べ物

プログラマーが調べ物をするときに役に立つサイトを作ります。

Spring BootでRESTfull Webサービスを作成する

RESTful Web サービス

Spring Bootでは簡単にRESTful Webサービスを作成することができます。 RESTとは「REpresentational State Transfer」の略で、クライアントとサーバー間でデータをやりとりするアプリケーションを構築するためのアーキテクチャスタイルの一つです。

REST APIではデータベースなどで管理している情報の中からクライアントに提供する情報を「リソース」として抽出します。 これをResource Oriented Architectureといいます。

  • Web上のリソースとして公開する
  • URIでリソースを識別する
  • HTTPメソッドによってリソースを操作する
  • JSON,XMLなどの適切なフォーマットを使用する
  • 適切なHTTPステータスコードを使用する
  • ステートレスなクライアント/サーバ間の通信を行う
  • 関連のあるリソースへリンクさせる

Spring BootでRestControllerを作成する

まず、デフォルトのDemoApplicationに @SpringBootApplicationアノテーションがあることを確認しましょう。 @SpringBootApplicationアノテーションを付与したクラスのパッケージ配下がコンポーネントスキャンの対象になります。

では、以下のようなサンプルクラスを作成してみます。

package com.example;

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

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import con.example.tw.RestaurantBean;

@RestController
@RequestMapping("log")
public class RestaurantController {
    final List<RestaurantBean> restaurantList = new ArrayList<RestaurantBean>();
        
    @RequestMapping(method = RequestMethod.GET)
    public List<RestaurantBean> getRestaurants() {
        RestaurantBean bean = new RestaurantBean();
        bean.setTagName("sampleTag");
        bean.setTabelogUrl("https://www.google.com");
        bean.setUserName("takashi");
        bean.setTweet("this is nice restaurant!");
        restaurantList.add(bean);
        return restaurantList;
    }
    
    
}

これで、localhost:8080/logにリクエストを投げると、以下のようなJSONが返ってきます。

[{"tweet":"this is nice restaurant!","userName":"takashi","tagName":"sampleTag","tabelogUrl":"https://www.google.com"}]