はじめに
前提
超駆け出しエンジニアが勉強したことをアウトプットして知識の定着を図る為に始めたQiita投稿の第一弾です。
私のテスト案件現場では何かバグが起こるたびに"API"やら"JSON"やら色々難しい言葉が飛び交う毎日。。
バグはそれらが要因で発生している事が多いからよく耳に入るんでしょうが、
「一体何のこっちゃかよく分からん、、、勉強しなければ、、、」
って事で勉強した事をまとめました。
大まかな流れ
今回の勉強内容の重要なキーワードは"API","REST","JSON"の3つ。
◯インプット : "API", "REST", "JSON"とは何?
↓
◯アウトプット : 実際にAPIを作って理解を深める
↓
◯まとめ
ゴール
インプットした内容を備忘録としてアウトプットすることで知識を整理する!
勉強内容
◯インプット
API(Application Programming Interface):
➡︎ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのこと。
「便利機能を外部向けに提供するもの」と言い方を変えるとしっくりくる。。?
例)天気予報アプリで現在の東京の気温の情報が欲しい
→「時刻」「場所」「欲しい情報」をリクエストすればその情報をレスポンスしてくれるAPI
(情報を提供)
→更にその情報を通知として飛ばしてくれるAPI
(機能を提供)
REST(REpresentational State Transfer):
➡︎多くのAPIで用いられている4つの原則・ルール
・アドレス可能性
(一つのURIを用いて全ての機能を表現できるようにすること)
・ステートレス性
(全てのリクエストが完全に分離していて、セッションなどの状態管理は行われないこと)
・接続性
(情報に「別の情報へのリンク」を含める事ができる事を指し、リンクを含めることで別の情報に接続することが可能になる。)
・統一インターフェース
(情報の取得、作成、更新、削除といった操作一式は全てHTTPメソッドを利用)
JSON(JavaScript Object Notation):
➡︎サーバーに対してリクエスト、レスポンスのやり取りを行うデータの記述形式の一種。
もっとも基本的な形式は、データのキーと値を{ }の中にコロンで区切って記載。
例)
{
"Key": "Value",
"キー": "値",
"Key1": "Value1"
}
配列[]を使用することも可能
{
[
"ID": 1,
"Name": "Taro",
"Height": 160
],
[
"ID": 2,
"Name": "Hanako",
"Height": 150
],
[
"ID": 3,
"Name": "Yuji",
"Height": 180
]
}
◯アウトプット
なんとなくAPIについてイメージが付いたところで簡易的なAPIを作成し、実際に動くかテストしてみた。
今回作成したAPI:『従業員の詳細情報が載っているDBに登録、参照、更新、削除するAPI』
①環境構築
(初めてMacBookで一から環境構築したので正直だいぶ手こずった。。)
・STS(Spring Tool Suite)
・Spring Intializrでアプリケーション作成
(Maven, Java, Spring Boot2.7.6, Jar, Java8, Spring Web, Spring Data JPA, MySQL Driver)
・MySQL
・MySQL Workbench(DB,Table,カラムの作成)
②コード作成
(この辺りは過去の経験の復習。)
・パッケージ作成(repository, controller, model, service)
・クラス作成
➡︎特にServiceの'method=RequestMethod.POST'等のHTTPメソッドでの処理の分け方は初めて知った。
③"Postman"を用いたAPIテスト
(現場でよく使うPostmanはこういう時の為のものだったのかと初めて知った。)
・HTTPメソッド(GET,POST,PUT,DELETE)の処理をJSON含めて作成
結果
うまくいった。。ふぅ。
作ったAPIの概要↓
HTTPメソッド | 内容 | JSON |
---|---|---|
GET | DBに登録されている従業員の情報を全て取得 | 無 |
POST | DBに新しく従業員の情報を登録 | 有 |
PUT | DBに登録されている指定の従業員の情報を更新 | 有 |
DELETE | DBに登録されている指定の従業員の情報を削除 | 無 |
まとめ
何かと初めてなものが多すぎて非常に手間取ったが、
こうやって実際にインプットだけでなくアウトプットでAPIを作成して中の仕組みを知ることで
より知識の定着が深まった。
まだまだ簡易的すぎるものしか出来ていないので、
これを起点に次々新しいことに挑戦して一つ一つ知識を付けていきたい・・・。
おわりに
今回はあくまで備忘録なので、今後は知識を与えられるような記事が書けるよう
レベルアップしていきたい。
参考記事
・JavaとSpring BootでREST APIを作成する方法
・Springbootの環境構築から Hello worldまで on Mac
・【Mac&Homebrew】MySQLのインストールとMySQL Workbenchを使った接続方法を丁寧に紹介