APIが叩かれた際、処理の前後に共通処理を入れる

SpringBootでAPIを作成する際、APIに共通の事前/事後処理を加えたいことがあると思います。

今回は、 HttpHandler を使って共通処理の記述を、呼び出し側に記述することなく実現します。

サンプルコードはgithubに上がっております。

1.HandlerInterceptorを作成する。

APIにリクエストが来た際の、前後の共通処理を記述する HandlerInterceptor を継承したクラスを作成します。

 

2. Handlerクラスを特定のリクエストパスに対して適応する。

WebAPIに関する設定をする WebMvcConfigurationSupport クラスを拡張したConfigurationクラスを作成します。

今回作成したハンドラーのBeanを、APIのパスを指定し、追加します。

 

3. APIを実行する。

サンプルコードのAPIを例に、APIを叩いた時の結果を見てみましょう。

APIのレスポンスを受け取ることができました。(ステータスコードは200)

 

次に、100以外の値を用いてリクエストを実行します。

 

APIのレスポンスを受け取れませんでした。(ステータスコードは200)

ログを見てみましょう。

 

1回目のリクエストの時は、preHandle メソッドが true を返したため、後続の処理が続き、APIを処理できました。

2回目のリクエストでは、 preHandle メソッドがfalseを返し、postHandle メソッド以降は呼ばれず、処理が中断され、レスポンスボディも空で返します。

 

以上のように、HandlerInterceptorは共通処理を挟むことができます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です