menu
書いてる野郎
orebike@gmail.com
Spring Boot の総合的なフロントコントローラーのエラーのレスポンスに関しては Spring Boot/View/Thymeleaf/エラー用テンプレート を参照。
任意の Thymeleaf のテンプレートを使いつつ、しかも任意のステータスコードを返したい場合はこのように実装する。 ModelAndView を使う。
@RequestMapping("/hoge") public ModelAndView hoge(ModelAndView mv) { mv.addObject("message", "Hoge World"); // テンプレートに送るパラメータ mv.setStatus(HttpStatus.NOT_FOUND); // ステータスコード mv.setViewName("hoge/world"); // 使うテンプレート指定 return mv; }
通常JSONをレスポンスする実装は RestController アノテーションを付けたクラスのレスポンスが Jackson によって自動変換されるという形になると思われる。
このステータスコードは当然に 200 になるのだが、これを任意にステータスコードに変えたい。
このようにする
@RequestMapping("/hoge") public ResponseEntity<Map<String, Object>> hoge() { Map<String, Object> map = new HashMap<>(); map.put("hoge", 12345); return new ResponseEntity<Map<String, Object>>(map, HttpStatus.BAD_GATEWAY); }
ResponseEntity に与える型を今まで Jackson で処理してたやつに変えればいいだけ。