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からダウンロードすることができます。
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、簡単な画面作成などしていきたいと思います。