すっかり忘れていたので、思い出しておこう。
@Controller
と@RestController
@Controller
はSSRのテンプレートのパスを返して画面遷移させたりするコントローラに付与する。
メソッドごとに@ResponseBody
を付ければ、Stringの値等をそのままBodyとして返すことができる。
@RestController
はコントローラ全体に@ResponseBody
が適用された状態になる。
ユースケース考えると、@Controller
を使いつつ@ResponseBody
を部分的に使うみたいなことはありそう。
@Controller public class Controller { @RequestMapping("view") public String view() { return "/index.html"; } @RequestMapping("body") @ResponseBody public String body() { return "こんぬつわ"; } }
@RestController public class Controller { @RequestMapping("body") public String body() { return "Hello"; } }
ResponseEntity<T>
ヘッダに要素を追加したい場合や、HTTPレスポンスを変更したい場合に使う。
HTTPレスポンスの細かい設定ができる。
return ResponseEntity.ok("TEST")
RestTemplate
他のAPIにアクセスするやーつ。
RestTemplate rest = new RestTemplate(); ResponseEntity<String> response = rest.getForEntity("URL", String.class);
で結果を取得できる。String以外のオブジェクトにもマッピングできる。 エラーハンドリングもう少し調べないといけないと思う。