概要
コントローラーが呼び出される前や後に実行する共通処理を追加する際についてまとめていきます。
使用言語:Java
やりたいこと
今回やりたいことは以下の3つです。
-
コントローラーが呼びされた際にリクエストをチェックする(今回はリクエストヘッダーのチェック)
-
チェック処理を正常に通過した場合、リクエストに新しい値を追加
-
コントローラーが呼び出される
-
コントローラーが呼びされた際にリクエストをチェックする
-
チェック処理を正常に通過した場合、リクエストに新しい値を追加
interceptor.java
public class SanpleInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String requestHeader= request.getHeader(AUTHORIZATION); // ヘッダーからAuthorizationの値を取得
// ここでrequestHeaderのAuthorizationの値のチェック処理を行う
// チェック処理を正常に通過した場合、リクエストに追加
request.setAttribute("add", "ok!")
return true;
}
}
- コントローラーが呼び出される
SampleControllr.java
@RestController
public class SampleController {
@RequestMapping("/sample")
public void sample(@RequestBody SampleRequest SampleRequest, @RequestAttribute Strin add) {
System.out.println(add);
// コンソール: ok!
}
}
Interceptorで追加した"ok!"という文字列が表示されタラ成功です!
今回はリクエストに対する処理でしたが、レスポンスを返却する際の処理も追加することが可能です。
共通化できる処理は共通化できるように、実装の仕方をもう少し勉強していきたいと思います!