前回の記事で、POST処理をさばくためによく使う@RequestBodyと@ModelAttributeについて書きました。
今回はGETリクエストをさばくのに使う@PathVariableと@RequestParamの使い分けについて説明します。
@PathVariable
/api/get/1
のように、REST形式のURIからパラメータを取るのに利用します。
@RequestMapping("/getMsg/{userId}") public List<MessageDto> getMessages(@PathVariable("userId") String userId) { return messageService.getMessage(userId); }
@RequestMappingアノテーションで指定するurlのうち、{val}で指定したものを@PathVariable("val")で取得します。
@RequestParam
?someId=1
のように、文字通りリクエストパラメータを取るのに利用します。
@RequestMapping("/getMsg/info") public List<MessageDto> getMessages(@RequestParam("userId") String userId) { return messageService.getMessage(userId); }
/path/getMsg/info?userId=hoge
などというurlに対して、@RequestParamでパラメータを取得できます。
どちらを使うか(REST形式にするかリクエストパラメータ形式にするか)はお好みですが、どちらか一方に寄せるのがオススメです。
両方あると、「このGETはRESTなのかリクエストパラメータなのかどっちだろう?」って感じで使う側が混乱しちゃいますしね。