今回、PathVariableについてみていきたいと思います。
PathVariableとは
- Spring3に追加された機能です。
- URL経路に変数を入れてくれるアノテーションです。
使い方
単純なマッピング
@GetMapping("/information/{id}")
public String getInformationById(@PathVariable long id) {
return "information/detail";
}
- @GetMapping(“/api/information/{id}”):{id}は動的です。
- /information/1の場合、@PathVariableアノテーションがついている変数にマッピングされます。
- マッピングの変数名を変更したい場合は、@PathVariable(“id”)に変更して「long id」の変数名を変更すれば行けます。
複数のパス変数のマッピング
@GetMapping("/information/{id}/{title}")
public String getInformationById(@PathVariable long id, @PathVariable String title) {
return "information/detail";
}
- 複数の場合は、PathVariableアノテーションの指定も複数となります。
- {id}はid変数にマッピングされ、{title}はtitle変数にマッピングされます。
PathVariable必須ではない場合
@GetMapping(value = { "/information", "/information/{id}" })
public String getEmployeesByIdWithRequiredFalse(@PathVariable(required = false) long id) {
if (id != null) {
return "information/detail";
} else {
return "informationl";
}
}
- PathVariableがある時もあればない時もある場合は、GetMappingのバリューに二つのURIを指定します。
- そして、「required = false」オプションを追加することで正常に動きます。
終わりに
今回は、PathVariableアノテーションについて調べてみましたが、個人的には「required = false」オプションを使うよりはメソッドを分けた方が良いかと思います。まだ、そういったロジックを作成する機会がないかもしれないですができたらこれも検討してみようと思います。
