こんにちは!今回は、Spring Frameworkの重要なアノテーションである@RequestMapping
について徹底解説します。@RequestMapping
は、リクエストとコントローラーメソッドの対応を簡単に設定できる便利なアノテーションです。基本的な使い方から応用的な使い方まで、幅広くカバーします!
@RequestMappingとは?
@RequestMapping
は、Spring MVCにおいてリクエストのURLやHTTPメソッドに応じて、どのコントローラーメソッドが処理を行うかをマッピングするためのアノテーションです。
リクエストのURLやパス、メソッド、メディアタイプに応じて、コントローラーが適切にリクエストを処理できるようになります。柔軟で汎用性が高く、WebアプリケーションやREST APIの開発に欠かせない存在です。
基本的な使い方
まずは@RequestMapping
の基本的な使い方を見てみましょう。以下は、HTTP GETリクエストを処理するシンプルなコード例です。
@RequestMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
このコードでは、URLが/hello
のリクエストが来た際にHello, World!
というメッセージを返す仕組みです。
@RequestMappingの使い方【応用編】
1. HTTPメソッドを指定する
@RequestMapping
では、特定のHTTPメソッド(GET, POST, PUT, DELETEなど)を指定して、処理を分岐させることができます。例えば、GET
メソッドのみを処理したい場合は、以下のようにします。
@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<User> getAllUsers() {
return userService.findAll();
}
2. URLパスに変数を使う
URLの一部を変数として扱い、動的にリクエストを処理することができます。たとえば、ユーザーIDに基づいてユーザー情報を取得する場合:
@RequestMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
3. クエリパラメータの利用
リクエストにクエリパラメータが含まれている場合、その値を取得して処理することもできます。
@RequestMapping("/search")
public List<User> searchUsers(@RequestParam String name) {
return userService.searchByName(name);
}
4. マルチパートリクエストの対応
ファイルアップロードなどのマルチパートリクエストにも対応可能です。
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = "multipart/form-data")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
return fileService.saveFile(file);
}
5. リクエストとレスポンスのメディアタイプを制御する
@RequestMapping
では、リクエストやレスポンスのメディアタイプを指定することができます。
@RequestMapping(value = "/users/{id}", produces = "application/json")
@ResponseBody
public User getUserJson(@PathVariable Long id) {
return userService.findById(id);
}
@RequestMappingの引数
1. value属性
value
属性では、リクエストURLを指定します。これは必須の属性です。
@RequestMapping(value = "/home")
public String homePage() {
return "home";
}
2. method属性
method
属性を使って、HTTPメソッドを指定します。
@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String submitForm() {
return "form submitted";
}
3. consumes属性
consumes
属性で、受け入れるメディアタイプを指定できます。
@RequestMapping(value = "/json", consumes = "application/json")
public String handleJsonRequest(@RequestBody User user) {
return "Received JSON";
}
4. produces属性
produces
属性では、レスポンスのメディアタイプを指定できます。
@RequestMapping(value = "/xml", produces = "application/xml")
@ResponseBody
public User getUserXml(@PathVariable Long id) {
return userService.findById(id);
}
おわりに
@RequestMapping
は、Spring MVCでのリクエスト処理において非常に強力なアノテーションです。今回の記事では、基本的な使い方から応用的なテクニックまで幅広く紹介しました。実際にコードを書いて、さまざまなリクエストに対応できるアプリケーションを構築してみてください!
もっと詳しく知りたい方は、Spring公式ドキュメントを見てみてくださいね。
他のMappingアノテーションについて知りたい方はこちらもどうぞ!↓↓↓↓