KUSAMAKURA

智に働けば角が立つ。情に棹させば流される。意地を通せば窮屈だ。とかくに人の世は住みにくい。

IntelliJ IDEA を使って最速で REST API を動かす手順(Maven + Spring Boot + Tomcat + Lombok)

概要

要するに、REST APIHello worldIntelliJ IDEA で書きましょうという内容。IntelliJ IDEA を話には聞いていたけど、今の業務プロジェクトを移行するのは敷居が高い。業務で、REST API を書いてはいるけど、色々な機能があって何が追加されているのがわからないなどあると思う。技術の習得には、何でもいいからとりあえず、作ることが一番だと思っているので、シンプルな構成を作る方法を説明する。

IntelliJ IDEA のインストール

何はともあれ、開発環境の構築。IntelliJ IDEA は、Eclipse みたいなものだと思って頂ければ OK。Eclipse 使ってて重いなあーとか、感じたら使ってみても良いのでは?
主旨ではないので、詳しいインストール方法は他に譲るが、基本的に IntelliJ IDEA のページに行って、Community Edition をダウンロードしてくれば OK。詳しいインストール方法は、【初心者向け】すぐできるIntelliJ IDEAの最初の使い方 などが詳しいみたいだ。

SPRING INITIALIZR でひな形プロジェクトを作成

続いて、ひな形プロジェクトの作成。世の中には便利な Web サービスがあるもので、SPRING INITIALIZR は、ポチポチと欲しいものを選択するだけで、ひな形のプロジェクトを作成してくれる。利用者は、JDK だけ入れておけば、Maven から Spring、Thymeleaf 果ては DataBase まで入れてくれるのだから昔のアーキテクトは何をしていたのだろう。
今回は、タイトルにもあるように、Maven + Spring Boot + Tomcat + Lombok の最小限構成で動かす。DB とか、クライアントとか欲しい人は、適当にポチポチと追加してくださいな。

1. Dependencies の追加

Search for dependencies に、Web と入力して、Enter. 次いで、Lombok と入力して、Enter.Selected Dependencies に、Web と、Lombok が追加されていることを確認。

f:id:kusamakura22:20170119151358p:plain

2. ひな形プロジェクトの作成

Generate Project ボタンを押下。demo.zip がダウンロードされる。解凍してできた demo フォルダを適当なディレクトリ(IntelliJ の作業スペース)に置いて終了。下記のようなディレクトリ構成になっているのを確認。

demo
│  .gitignore
│  demo.iml
│  mvnw
│  mvnw.cmd
│  pom.xml
│
├─.idea           ### IntelliJ settings
│  └─libraries
├─.mvn
│  └─wrapper
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─example
│  │  │              DemoApplication.java     ### Application main class
│  │  │
│  │  └─resources
│  │      │  application.properties
│  │      │
│  │      ├─static
│  │      └─templates
│  └─test
│      └─java
│          └─com
│              └─example
│                      DemoApplicationTests.java     ### Test Class
│
└─target          ### Output Folder
3. IntelliJ でプロジェクトの読み込み

3-1. メニュー → File → Project from Exsisting sources...
3-2. 先程 2. で配置した demo ディレクトリを選択.
3-3. Import project from external model を選択し、Maven を選択.
3-3. 各種設定はそのままで、Next で進み、Import Project を Finish.

4. ひな形プロジェクトの動作確認

メニュー → Run → Run... All in Demo を選択。DemoApplicationTests が、All green(1 test passed)で実行されば、OK.

f:id:kusamakura22:20170119151558p:plain

Web API

Controller を追加する。
example 下に app のパッケージを作成し、次の DemoController.java を作成する。

@RestController
@RequestMapping("/demo")
public class DemoController {

    @Data
    private static class DemoRequest {
        private Integer id;
        private String name;
    }


    @Autowired
    private MessageSource messageSource;
    @RequestMapping(value = {"/create"}, method = RequestMethod.POST)
    public void create(@RequestBody DemoRequest request) {
        System.out.println(request);
    }


}
demo
│
├─.idea           
│  └─libraries
├─.mvn
│  └─wrapper
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─example
│  │  │          │  DemoApplication.java
│  │  │          │
│  │  │          └─app
│  │  │                  DemoController.java   ### 今回追加した Controller
│  │  │
│  │  │
│  │  └─resources
│  │      │  application.properties
│  │      │
│  │      ├─static
│  │      └─templates
│  └─test
│      └─java
│          └─com
│              └─example
│                      DemoApplicationTests.java
│
└─target
5. プロジェクトの起動

DemoApplication クラスを右クリックして、「Run DemoApplication.main()」をクリック。
コンソールに次の出力が確認できれば、OK.

2017-01-19 15:42:01.201  INFO 9928 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-01-19 15:42:01.599  INFO 9928 --- [           main] com.example.DemoApplication              : Started DemoApplication in 8.3 seconds (JVM running for 8.682)

クライアント(DHC)からアクセス

今回は呼び出し画面とか作ってないので、Chrome 拡張機能DHC - Restlet Client を利用する。Chrome ウェブストの説明にもあるように、簡単な操作で利用できるので特に説明は必要ないと思うが、Web APIのテストが簡単にできるChromeアプリ DHC などに詳しい説明があるようだ。

DHC を起動したら、次の項目を設定し、SENDボタンを押下。

URL:http:localhost:8080/demo/create
Content-Type:application/json;charset=UTF-8
BODY:
{
    "id": 1111,
    "name": "aaa"
}

RESPONSE に、Status 200 が確認できれば、成功となる。Server 側もコンソール出力が行われているので確認して欲しい。

f:id:kusamakura22:20170119155307p:plain

まとめ

REST APIHello world 的なものを作成してみた。実際やってみるとその手軽さに驚くと思う。また、なかなか敷居の高い No SQL や、Session、AWS などもひな形は簡単に作成できるので、是非、色々と試して見て欲しい。