こんにちは!ぐち(@bloguchi)です。
タイトルの通りなんですが、下記のSpringの公式サイトに記載のあるチュートリアルをやってみたのでご紹介します。
前提条件
僕、英語できないんで誤訳とか意味の取り違い、奇想天外な解釈など思いっきり出てくると思いますが、結果的にちゃんと動くので、そういう目で温かく見てくださいね。笑
あくまでも英語なんてからっきしできない社会人がノリと勢いだけで英語のチュートリアルに取り組んでみた戦記だと思って頂ければちょうどかもしれません。(何がちょうどなんだよ)
ちなみにGradle
のインストールが完了していることと、環境はMacです。Gradle
のインストールがまだの方はHomebrewでさくっとインストールしておいてください。
$ brew install gradle
Homebrewのインストールがまだの方は下記の記事を参考にインストールしてからGradle
のインストールをお願いします。
プロジェクトテンプレートを作る
チュートリアルに取り組む前にまずはプロジェクトの雛形(テンプレート)を作りましょう。
こちらからさくっと取得しましょう!
今回はStable版の1.5.6
で作成します。ビルド環境はGradle
です。言語は今話題のKotlin
でもいいですが、ここはJava
で。笑
Group
はパッケージ名になります。Artifact
はパッケージの最後の名前です。Search for dependencies
にWeb
と入力しSelected Dependencies
に追加しておきます。
最後にGenerate Project
をクリックすればスケルトンといいますか、テンプレートといいますか取得することができます。
IDEにインポート
ダウンロードしてきたプロジェクトをIDEにインポートします。僕は今回IntelliJ IDEA
を使います。Eclipseでもさほど変わりはないと思います。
起動画面でImport Project
をクリックします。
写真の通り、Import project from external model
にチェックをつけて、Gradle
を選択してNext
をクリックします。
画像の通り、初期表示のままFinish
をクリックします。
以上で、インポートは完了なので次からいよいよチュートリアルを進めていきます。
やること
サイトだとWhat you’ll build
と冒頭に書かれていますが、直訳だと「あなたができること」ですかね。ようするに完成したら、このチュートリアルではこんなことができますよ。ということですね。
下記のようにHTTPのGETリクエストが送れるようになります。
http://localhost:8080/greeting
レスポンスは下記のようにJSONで受け取ることができます。
{“id”:1,”content”:”Hello, World!”}
また、name
というパラメータを指定して実行することができます。
http://localhost:8080/greeting?name=User
name
をパラメータに指定して実行した場合のレスポンスは下記のようになります。
{“id”:1,”content”:”Hello, User!”}
必要なもの
サイトではWhat you’ll need
と書かれています。このチュートリアルの対象みたいなものですね。15分で完了するそうです。笑
JDK1.8以上でGradleかMavenを使っていて、IDEは好きなのでいいよ的な感じですね。
はじめてみる
やーっとですが、進めていきましょう。Build with Gradle.
の部分から開始です。
まずはフォルダ階層だったり、build.gradle
の内容が紹介されています。冒頭でIntelliJにインポートしたプロジェクトでもbuild.gradle
を見ておきましょう。
buildscript { ext { springBootVersion = '1.5.6.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
クラスを作成する
続きましてCreate a resource representation class
です。実際にクラスを追加していきます。
まずはGreeting.java
です。hello
フォルダを右クリックしてファイルを追加します。
package com.example.hello; public class Greeting { private final long id; private final String content; public Greeting(long id, String content) { this.id = id; this.content = content; } public long getId() { return id; } public String getContent() { return content; } }
続いてGreetingController.java
です。同様にhello
フォルダを右クリックしてファイルを追加します。
package com.example.hello; import java.util.concurrent.atomic.AtomicLong; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting") public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }
続いてサイトではApplication.java
を作成すると記載があるように見えますが、この手順通りに進められているとHelloApplication.java
という実行クラスがあると思いますので、追加は不要です。
実行してみる
ターミナルで./gradlew bootRun
を実行しろとサイトに記載がありますので、ターミナル.appを起動・・・しなくてもいいんです!笑
IntelliJ IDEAにはターミナルが内蔵されているのです!!すごいでしょ?では早速IntelliJのターミナルを表示させましょう。
画面左下の灰色のアイコンにカーソルを乗せるとメニューが出てくるので、Terminal
をクリックしてください。すると、画面下部にターミナルが表示されるかと思います。
そこで前述のコマンドを実行してみましょう。
$ ./gradlew bootRun
次々とログが表示されますが、驚かずに下記の状態になるまで我慢してくださいね。笑
8080
ポートにて実行できたよという内容が表示されているのでhttp://loclahost:8080/greeting
にアクセスしてみましょう!冒頭でご説明したようなJSONが表示されれば成功です!めちゃくちゃシンプルですが、RESTful APIの第一歩は完成しました。おめでとうございます。
また冒頭でご紹介したようにname
をパラメータに指定して実行してみてください。表示されるJSON結果が変わるはずなので色々と試してみてください。
では今回はこの辺で。