2月16日(月)1コマ目
きょう、やったこと
REST APIでエラーを通知する
今日のホワイトボード
今までつくったREST APIはサーバー側でエラーが発生しても、クライアントに伝えていなかった。
エラー発生をHTTPのステータスコードを使って、クライアントに通知する。
作成するアプリケーション
全件検索結果表示+新規登録。
新規登録時に、IDがすでに登録済みならエラーを表示したい。
![]() |
| 図 作成するアプリケーション |
サーバーからクライアントにエラーを通知する
HTTPのステータスコードを使って通知する。
今までは、サーバーでエラーが発生しても、クライアントにはステータスコード200を通知していた。
![]() |
| 図 HTTPのステータスコードでエラーを通知する |
クライアントから新規登録データを送信されたが、その内容に問題がある場合は、ステータスコード400("Bad Request")を返信する。
そのほかのステータスコード
300番代はリダイレクトメッセージ。
ページ遷移をこの300番代のステータスコードで実現できる。
![]() |
| 図 300番代のステータスコードでリダイレクト |
400番代はクライアントからのリクエスト内容に問題があるときに送信する。
500番代はサーバーのエラー。
未完成のソースコード
今日、つくったところまで。
Book.java
書籍情報受け渡し用クラス。
BookDAO.java
書籍情報アクセス用クラス。
insert()メソッドに注意!!
BookController.java
コントローラクラス。
insert()はIDが重複している場合は、DuplicateIDExceptionがスローされる.
index.html
とくになんてことはないかと。
insert.js
クライアントの登録データに問題ありの場合の処理
クライアントから送信された新規登録データのうち、IDがすでに利用中の場合は、エラーにしたい。
エラー時の処理のために追加したクラス等。
DuplicateIDException.java
登録時にIDが重複しているときにスローされる実行時例外。
ErrorResponse.java
エラー情報をまとめて扱うためのクラス。
(未完成)GlobalExceptionHandler.java
コントローラー内の各メソッドで共通する処理をこのクラスにまとめて書く。
エラー処理も共通ならこちらに。
未完成。
次回は
GlobalExceptionHandlerクラスから。
サンプル作成のつづき。


