こんばんは、 3連休でどこも出かけなかった @version1 です。
もう少し有意義に過ごせたのでは、 という思いは募る一方ですが、 それは置いておいて久しぶりにKotlinに関する記事です。
(3連休でこれしか更新していない・・・ +CRUD全てをAPIからできるようにしたかったけど 終わらなかった。。)
タイトルもその①としたように、 今回はAPIで本のリストと、ID指定した本一件を jsonで返却するAPIまでです。
そのほかの、作成・削除・更新は いつの日か更新します!! (8割くらいはできているんだけど、詰めの部分でまだあげられないとして 今回の記事からは外しました。)
ではでは早速行きましょう。
前提条件
使用する構成はいつもの通りです。
Framework: | Spring Boot |
---|---|
Language: | Kotlin |
Database: | Mysql |
Build: | Gradle |
データベースは booksテーブルだけで、 これをKotlin+SpringBootでこねこねして jsonで返却するの今回のミッションになります。
ちなみに今回使用するテーブルは SQLだと以下のようになります。
create table if not exists books (
id int primary key,
name varchar(255),
author varchar(255),
isbn varchar(255),
category_id int,
created_at datetime,
updated_at datetime
);
delete from books;
insert into books
VALUES( 1 , '多動力' ,'堀江貴文', '9784344031159', 1 , NOW() , NOW()),
( 2 , 'キングダム47巻' ,'原泰久', '9784088907017', 2 , NOW() , NOW()),
( 3 , '深夜特急〈1〉香港・マカオ (新潮文庫)' ,'沢木耕太郎', '9784101235059', 3 , NOW() , NOW());
イメージが湧きづらい人用に 一覧ページも作成しました。

↑この一覧がJSON形式で取得できれば成功です。
ちなみにgitレポジトリも用意したので どうぞ。
https://github.com/version-1/kotlin-api-sample-
早速Kotlin+SpringBoot APIの説明
はじめに、ファイル構成を

このように 以前のKotlinシリーズでもおなじみの 構成となっております。
わからない方はこちらが参考になるかと思います。
Kotlin + Spring boot で DBからデータ取得して画面に表示
はい、 では下が実際のコードです。
BookController
@Controller
class BookController @Autowired constructor(private val bookService: BookService) {
@RequestMapping("/books")
fun index(): ModelAndView = ModelAndView("/book/index").apply { addObject("books", bookService.findAllBook()) }
@RequestMapping("/api/books")
fun api_index(): ResponseEntity<MutableList> {
return ResponseEntity.ok(bookService.findAllBook())
}
@RequestMapping("/api/books/{id}")
fun api_show(@PathVariable("id") id : Int): ResponseEntity {
return ResponseEntity.ok(bookService.findById(id))
}
}
それぞれなんてことはないコードですね。
個人的な今回の学びは、 URLから値をとってくるのに
@RequestMapping("/api/books/{id}")
fun api_show(@PathVariable("id") id : Int): ResponseEntity {
のようにかけることと
ResponseEntityクラスを使うとクラスをそのまま jsonにして返却できることですかね。
ちなみに springを起動して
http://localhost:8080/api/books
にアクセスすると

本の一覧が
http://localhost:8080/api/books/1にアクセスすると

指定したIDの本一件を取得することができます。以上、参照だけだと結構さっくり終わりますね。 次回は作成・更新・削除の部分を公開します。