カテゴリ: Spring 更新日: 2025/12/29

Javaの@RequestMappingアノテーションの使い方を完全ガイド!初心者でもわかる基本と実践

Springの@RequestMappingアノテーション
Springの@RequestMappingアノテーション

先生と生徒の会話形式で理解しよう

生徒

「Springフレームワークで@RequestMappingっていうのをよく見かけるんですけど、これって何に使うんですか?」

先生

「良い質問だね!@RequestMappingは、Spring MVCでHTTPリクエストを処理するためのアノテーションなんだ。Webアプリケーションを作る時に非常に便利なんだよ。」

生徒

「具体的にはどうやって使うんですか?サンプルが見たいです!」

先生

「もちろん!じゃあ、基本的な使い方から一緒に見ていこう。」

1. @RequestMappingアノテーションとは?

1. @RequestMappingアノテーションとは?
1. @RequestMappingアノテーションとは?

JavaのSpringフレームワークでは、@RequestMappingアノテーションは、特定のURLパスに対してHTTPリクエストをマッピングするために使われます。これにより、クライアントからのリクエストがどのメソッドで処理されるかを決定することができます。

例えば、Webアプリケーションでユーザーのリクエストに応じて、異なるページやデータを表示させたい時に@RequestMappingを使用します。@GetMapping@PostMappingなどの派生アノテーションもありますが、@RequestMappingはこれらすべての基礎となるアノテーションです。

2. 基本的な@RequestMappingの使い方

2. 基本的な@RequestMappingの使い方
2. 基本的な@RequestMappingの使い方

まずは、@RequestMappingの基本的な使い方を見ていきましょう。


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String sayHello() {
        return "Hello, Spring!";
    }
}

上記の例では、/helloというURLにアクセスすると、「Hello, Spring!」というメッセージが表示されます。@RequestMapping("/hello")がURLパスを指定しており、そのパスにリクエストが来ると、sayHello()メソッドが実行されます。

3. HTTPメソッドの指定(GET, POSTなど)

3. HTTPメソッドの指定(GET, POSTなど)
3. HTTPメソッドの指定(GET, POSTなど)

次に、@RequestMappingでHTTPメソッド(GET, POSTなど)を指定する方法を紹介します。method属性を使って、リクエストの種類を指定できます。


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public String getUser() {
        return "Fetching User Data";
    }

    @RequestMapping(value = "/user", method = RequestMethod.POST)
    public String createUser() {
        return "Creating New User";
    }
}

この例では、/userエンドポイントに対して、GETリクエストなら「Fetching User Data」、POSTリクエストなら「Creating New User」が返されます。

4. パスパラメータとクエリパラメータの使い方

4. パスパラメータとクエリパラメータの使い方
4. パスパラメータとクエリパラメータの使い方

@RequestMappingを使って、URLから動的なパスパラメータを取得することも可能です。例えば、ユーザーIDを指定して情報を取得する方法を見てみましょう。


import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ProfileController {

    @RequestMapping("/profile/{userId}")
    public String getProfile(@PathVariable String userId) {
        return "Profile for user: " + userId;
    }
}

この場合、/profile/123のようにアクセスすると「Profile for user: 123」といったレスポンスが返されます。

実行結果


Profile for user: 123

5. @RequestMappingの応用:パラメータの条件指定

5. @RequestMappingの応用:パラメータの条件指定
5. @RequestMappingの応用:パラメータの条件指定

さらに応用として、クエリパラメータを使ってリクエストを条件分岐させることもできます。


import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SearchController {

    @RequestMapping("/search")
    public String search(@RequestParam String keyword) {
        return "Results for: " + keyword;
    }
}

このコードでは、/search?keyword=Springというリクエストに対して「Results for: Spring」というレスポンスを返します。

6. クラスレベルの@RequestMappingで共通パスを指定する

6. クラスレベルの@RequestMappingで共通パスを指定する
6. クラスレベルの@RequestMappingで共通パスを指定する

@RequestMappingはメソッドだけでなくクラスに付与することもできます。クラスに指定したパスは「共通のプレフィックス」として扱われ、同じコントローラー内の複数メソッドに共通のURLを持たせたい時に便利です。

例えば、ユーザーに関するAPIをまとめたい場合、クラスに@RequestMapping("/users")を付けると、メソッド側ではその下の階層だけを書けばよくなり、URL設計が整理されます。


@RestController
@RequestMapping("/users")
public class UserApiController {

    @RequestMapping("/list")
    public String listUsers() {
        return "ユーザー一覧を取得しました";
    }

    @RequestMapping("/info")
    public String userInfo() {
        return "ユーザー情報を表示します";
    }
}

このように@RequestMappingをクラスとメソッドで組み合わせることで、API設計が見やすくなり、URLの階層構造が整理されます。

7. @RequestMappingと@GetMapping / @PostMappingとの違い

7. @RequestMappingと@GetMapping / @PostMappingとの違い
7. @RequestMappingと@GetMapping / @PostMappingとの違い

@RequestMappingはHTTPメソッドやURLパスなどを柔軟に指定できる反面、記述が少し長くなりがちです。そのためSpring 4.3以降では、用途に応じた派生アノテーションである@GetMapping@PostMappingが用意されています。

例えばGET専用の処理なら@GetMappingを使うとスッキリ書けます。


// @RequestMappingを使う場合
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() { return "Hello"; }

// @GetMappingを使った場合(省略形)
@GetMapping("/hello")
public String hello() { return "Hello"; }

機能的にはどちらも同じ結果になりますが、可読性や保守性の面では@GetMappingなどの専用アノテーションを使うのが一般的です。ただし、複数条件を組み合わせたい場合は@RequestMappingが役立ちます。

8. @RequestMappingを使ったパラメータのバリデーション設計

8. @RequestMappingを使ったパラメータのバリデーション設計
8. @RequestMappingを使ったパラメータのバリデーション設計

Webアプリケーションでは、受け取るパラメータをそのまま処理すると不正な値が入り、エラーにつながる可能性があります。@RequestMappingでは@RequestParam@PathVariableと組み合わせてバリデーションを明示することで、安全なAPIを設計できます。


@RequestMapping("/age")
public String checkAge(@RequestParam(required = true) Integer age) {
    if (age < 0) return "年齢は0以上を指定してください";
    return "入力された年齢: " + age;
}

required=trueを付けることで、パラメータが指定されていない場合にエラーを返せるため、API利用者に正しい使い方を促せます。安全で信頼性のあるREST APIを作るためには、こうしたチェックを積極的に行うことが大切です。

まとめ

まとめ
まとめ

この記事を通して、JavaのSpringフレームワークで使用される@RequestMappingアノテーションについて詳しく学びました。@RequestMappingを使うことで、特定のURLに対してHTTPリクエストを簡単にマッピングし、Webアプリケーションのルーティングを制御できるようになります。基本的な使い方から、GETPOSTなどのHTTPメソッドの指定方法、さらにはパスパラメータやクエリパラメータの利用方法についても解説しました。

特に、API開発においては@RequestMappingを活用することで、URLパターンに応じたメソッドの処理が可能になり、シンプルでメンテナンスしやすいコードを書くことができます。また、HTTPメソッドを明示的に指定することで、処理の安全性を高めることもできます。これにより、よりセキュアで効率的なWebアプリケーションを構築できるようになります。

サンプルプログラムで復習しよう

最後に、これまで学んだ内容をまとめたサンプルプログラムを紹介します。以下のプログラムでは、異なるHTTPメソッドやパスパラメータ、クエリパラメータの使い方をすべて網羅しています。


import org.springframework.web.bind.annotation.*;

@RestController
public class DemoController {

    // 基本的なGETリクエスト
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String sayHello() {
        return "Hello, Spring!";
    }

    // パスパラメータの使用
    @RequestMapping("/user/{id}")
    public String getUserById(@PathVariable int id) {
        return "User ID: " + id;
    }

    // クエリパラメータの使用
    @RequestMapping("/search")
    public String search(@RequestParam String keyword) {
        return "Searching for: " + keyword;
    }

    // POSTリクエストの処理
    @RequestMapping(value = "/submit", method = RequestMethod.POST)
    public String handlePost(@RequestBody String data) {
        return "Data submitted: " + data;
    }
}

実行結果例


GET /hello
=> Hello, Spring!

GET /user/10
=> User ID: 10

GET /search?keyword=Java
=> Searching for: Java

POST /submit with body "Test Data"
=> Data submitted: Test Data
先生と生徒の振り返り会話

生徒

「@RequestMappingの使い方がだいぶ分かってきました!でも、@GetMappingとか@PostMappingとどう違うんですか?」

先生

「とても良い質問だね!実は@GetMapping@PostMappingは、@RequestMappingの特定のHTTPメソッド用の短縮形なんだ。例えば、@RequestMapping(method = RequestMethod.GET)の代わりに@GetMappingを使うと、コードがよりシンプルになるよ。」

生徒

「なるほど、それなら@GetMapping@PostMappingを使った方が分かりやすいですね!」

先生

「そうだね。特に今後の開発では、派生アノテーションを使うことで、可読性が上がるから積極的に活用するといいよ。でも、基本は@RequestMappingだから、しっかり理解しておくと応用が効くようになるよ。」

生徒

「これからもっと練習してみます!今日教えてもらったことをしっかり覚えて、次のプロジェクトで使ってみます。」

先生

「その意気だね!頑張ってね!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

@RequestMappingアノテーションとは何ですか?Spring MVCで何のために使うのですか?

@RequestMappingは、JavaのSpringフレームワークにおいて、特定のURLに対するHTTPリクエストを処理するためのアノテーションです。Webアプリケーションでどのメソッドがどのリクエストを処理するかを指定するために使われます。

Springの学習を効率化したい方へ

この記事の内容をもっと深く知るには、以下の入門書が最適です。

Spring Framework超入門をAmazonで見る
カテゴリの一覧へ
新着記事
New1
Spring
SpringDataJPAのJPAクエリメソッド「NotLike」の使い方を完全ガイド!初心者向け解説
更新記事
New2
Spring
SpringDataJPAのJPAクエリメソッド「Like」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Java
JavaのLocalDateTimeクラスとplusMinutesメソッドを完全ガイド!初心者でもわかる分単位の時間操作
新規投稿
New4
Spring
SpringDataJPAのJPAクエリメソッド「IsNotNull」と「NotNull」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Java
JavaのBooleanクラスの使い方を完全ガイド!初心者でもわかる真偽値の操作
No.3
Java&Spring記事人気No3
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.4
Java&Spring記事人気No4
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.5
Java&Spring記事人気No5
JSP
JSPでif文・for文を使う方法!初心者でもわかるJavaとの違いと使い方
No.6
Java&Spring記事人気No6
Spring
SpringのBindingResultを完全ガイド!初心者でもわかる入力チェックとエラー処理
No.7
Java&Spring記事人気No7
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.8
Java&Spring記事人気No8
Thymeleaf
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加