LoginSignup
3
3

More than 5 years have passed since last update.

Spring Bootを使ってみた

Last updated at Posted at 2018-11-18

Spring Bootで単純なWebAPIを作成

背景

Springの勉強をしていましたが、設定ファイルなどの設定が多く、いまいちイメージが湧かなかったので、まずは動くものを作って、少しずつ理解を深めよう思い触ってみました。また、文章を書く練習も込めて記事にしました。

以下の記事がわかりやすかったので、内容を参考にさせてもらいました。
https://qiita.com/sugaryo/items/5695bfcc21365f429767

環境

環境 バージョン
OS macOS Hige Sierra 10.13.6
開発環境 Spring Suite Tool 3.9.4.RELEASE
開発言語 Java 1.8.0_171
SpringBoot 2.1.0

手順

プロジェクトはSpringのHPからダウンロードすることができます。

https://start.spring.io/
スクリーンショット 2018-11-19 0.15.13.png

Artifactに「example」、Dependenciesに「Web」と入力して、「Generate Project」ボタンを押下します。ダウンロードしたzipファイルを解凍して、STSにインポートすればOKです。

※STSからSpringBootの雛形を作成することも可能ですが、ここでは割愛します。

ExampleApplication.javaを右クリックして「Run As」でTomcatが実行されます。しかし、現状ではControllerが定義されていないため、エラー画面が表示されます。そこで「Hello Spring Boot!」を返すよう、ExampleApplication.javaに以下を追記します。

文字列を返す

@RequestMapping("/test0")
private String testRetrun() {
    return "Hello! Spring Boot!";
}

再度、ExampleApplication.javaを右クリックして「Run As」を実行して、ブラウザからhttp://localhost:8080/test0 にアクセスすると「Hello! Spring Boot!」が返ってきます。

パスパラメータを返す

次にパスパラメータを返すように修正します。

@RequestMapping("/test1/{param}")
private String testPathVariable(@PathVariable String param) {
    return "受け取ったパラメータ:" + param;
}

上記のように、@RequestMappingでマッピングするURLの{param}のパスを@PathVariableでアノテートしたパラメータ(上記の場合はparam)にバインドしています。http://localhost:8080/test1/hogeにアクセスすると「受け取ったパラメータ:hoge」が返ってきます。

リクエストパラメータを返す

@RequestMapping("/test2")
private String testRequestParam(@RequestParam() String param) {
    return "受け取ったパラメータ:" + param;
}

上記では@RequestParam()でリクエストパラメータを受け取っています。上記は@RequestParam("param")と同じ意味で、仮引数名と同じ名前の場合省略することができます。
http://localhost:8080/test2?param=hogeにアクセスすると「受け取ったパラメータ:hoge」が返ってきます。

@RequestMappingでは、HTTPメソッドを指定することができます。以下のようにするとPOSTのみ、処理することが可能となります。

@RequestMapping(value = "/test3", method = RequestMethod.POST)

JSONを返す

SpringBootのRestControllerでは、いわゆるJavaBean(POJO)を返すとJSON形式に変換して返してくれます。(これ便利だと思う
まずは適当なJavaBeanクラスを作成します。

public static class HogeMogeBean {
    private String hoge;
    private int moge;

    //getter,setter,ctorは省略
    //上記を書かないと裏で動いてると思われるjacksonでエラーとなるので必ず作成すること

受け取ったリクエストに対して、JavaBeanクラスを返すようにします。

@RequestMapping(value = "/test4", method = RequestMethod.GET)
private HogeMogeBean testRequestJson() {
    return new HogeMogeBean("ほげ",123);
}

http://localhost:8080/test4へアクセスすると、以下のようなJSONが返ってきます。

応答
{"hoge":"ほげ","moge":1234}
応答ヘッダ
Content-Type: application/json;charset=UTF-8
Date: Sun, 18 Nov 2018 15:01:41 GMT
Transfer-Encoding: chunked

終わりに

単純なWebAPIは簡単に作れそうだなという印象でした。Spring Bootの良い点として、jarファイルを作成すればtomcatなどなく、実行できるためデプロイなどが不要となるところだと思います。その分、ファイルサイズが大きくなると思いますが、現状は問題ないサイズだと思います(ファイルサイズが大きくなったりライブラリの数が増えると重くなるのかも)。さくっと簡単な機能を実装するには良いと思いました。これをベースにDBアクセスやJPA、簡単な画面作成などしていきたいと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3