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

Springの@GetMappingアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門

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

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

生徒

「JavaのSpringフレームワークを使ってWebアプリケーションを作りたいんですが、@GetMappingアノテーションの使い方がよくわからないんです。」

先生

「それなら@GetMappingアノテーションについて詳しく説明するね。このアノテーションを使うと、HTTP GETリクエストに対応するメソッドを簡単に定義できるんだよ。」

生徒

「GETリクエストって具体的に何ですか?」

先生

「GETリクエストは、Webブラウザがサーバーにデータを要求するためのHTTPリクエストの一種だよ。ブラウザのアドレスバーにURLを入力してWebページにアクセスするときも、実はGETリクエストを送っているんだ。」

生徒

「なるほど!じゃあ、@GetMappingを使うとどんな感じになるんですか?」

先生

「よし、実際のコードを見てみよう!」

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

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

@GetMappingは、Spring MVCで使われるアノテーションの一つです。特に、HTTP GETリクエストを処理するために使用されます。通常、ブラウザからページを取得するときやAPIからデータを取得するときに使われるリクエストです。

例えば、次のようにコントローラークラスを作成して、@GetMappingを利用します。


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

@RestController
public class HelloController {

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

実行結果例


GET /hello
=> Hello, Spring!

この例では、/helloというURLにアクセスすると、「Hello, Spring!」というメッセージが表示されます。

2. @GetMappingでパラメータを受け取る方法

2. @GetMappingでパラメータを受け取る方法
2. @GetMappingでパラメータを受け取る方法

@GetMappingでは、URLにパラメータを含めてデータを取得することも可能です。たとえば、ユーザーの名前を入力して、その名前に応じたメッセージを返すように設定できます。


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

@RestController
public class GreetingController {

    @GetMapping("/greet")
    public String greetUser(@RequestParam String name) {
        return "Hello, " + name + "!";
    }
}

実行結果例


GET /greet?name=Alice
=> Hello, Alice!

このように@RequestParamを使うことで、クエリパラメータを受け取り、それを使って動的なレスポンスを返すことができます。

3. @GetMappingでパス変数を使う方法

3. @GetMappingでパス変数を使う方法
3. @GetMappingでパス変数を使う方法

Springでは、@PathVariableを使ってURLパスに含まれる変数を受け取ることも可能です。これにより、より直感的なURL設計ができます。


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

@RestController
public class UserController {

    @GetMapping("/users/{id}")
    public String getUserById(@PathVariable int id) {
        return "User ID: " + id;
    }
}

実行結果例


GET /users/123
=> User ID: 123

このように、URLパスに/users/123のようにIDを埋め込んでリクエストすると、そのIDを取得して処理できます。

Spring FrameworkやThymeleafを使った Webアプリ開発の全体像をやさしく理解したい人には、 この入門書が定番です。

Spring Framework超入門をAmazonで見る

※ Amazon広告リンク

4. @GetMappingの応用:JSONレスポンスの返却

4. @GetMappingの応用:JSONレスポンスの返却
4. @GetMappingの応用:JSONレスポンスの返却

Springでは、@GetMappingを使ってJSON形式のレスポンスを返すこともできます。これにより、フロントエンドとのデータ連携がしやすくなります。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;

@RestController
public class JsonController {

    @GetMapping("/json")
    public Map<String, String> getJson() {
        return Map.of("message", "Hello, JSON!", "status", "success");
    }
}

実行結果例


GET /json
=> {"message": "Hello, JSON!", "status": "success"}

これにより、APIとしてデータをやり取りする際にも@GetMappingが便利に使えます。

5. @GetMappingの活用例

5. @GetMappingの活用例
5. @GetMappingの活用例

@GetMappingは、シンプルなWebアプリケーションやAPIのエンドポイントを定義する際に非常に便利なアノテーションです。HTTP GETリクエストに対して迅速に対応するための方法として覚えておきましょう。

以下のように複数のエンドポイントをまとめて定義することも可能です。


@RestController
public class MultiEndpointController {

    @GetMapping("/home")
    public String home() {
        return "Welcome to Home!";
    }

    @GetMapping("/about")
    public String about() {
        return "About Us Page";
    }
}

実行結果例


GET /home
=> Welcome to Home!

GET /about
=> About Us Page

このように複数のエンドポイントを整理することで、コードの見通しが良くなり、メンテナンスも簡単になります。

6. クラスレベルの@RequestMappingと@GetMappingの組み合わせ

6. クラスレベルの@RequestMappingと@GetMappingの組み合わせ
6. クラスレベルの@RequestMappingと@GetMappingの組み合わせ

クラスに@RequestMappingで共通のURLプレフィックスを付け、各メソッドに@GetMappingでサブパスを付けると、エンドポイント設計がシンプルになります。Spring Bootでの実装例を見てみましょう。


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

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

    @GetMapping
    public String list() {
        return "Users Index";
    }

    @GetMapping("/{id}")
    public String show(@PathVariable Long id) {
        return "User Detail: " + id;
    }
}

実行結果例


GET /api/v1/users
=> Users Index

GET /api/v1/users/10
=> User Detail: 10

7. @RequestParamの便利機能(required・defaultValue・複数値・Optional)

7. @RequestParamの便利機能(required・defaultValue・複数値・Optional)
7. @RequestParamの便利機能(required・defaultValue・複数値・Optional)

@RequestParamは必須制御やデフォルト値、配列・リストの受け取りに対応しています。未指定時の扱いを決めておくと初心者でも扱いやすいAPIになります。


import java.util.List;
import java.util.Optional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SearchController {

    // 必須ではないキーワード(未指定なら空文字)、ページ番号はデフォルト1
    @GetMapping("/search")
    public String search(
            @RequestParam(name = "q", required = false, defaultValue = "") String keyword,
            @RequestParam(name = "page", defaultValue = "1") int page,
            @RequestParam(name = "tag", required = false) List<String> tags // ?tag=a&tag=b
    ) {
        return "q=" + keyword + ", page=" + page + ", tags=" + tags;
    }

    // Optionalで未指定を明示的に扱う
    @GetMapping("/search/optional")
    public String searchOptional(@RequestParam Optional<String> q) {
        return q.map(v -> "q=" + v).orElse("q is empty");
    }
}

実行結果例


GET /search?q=spring&page=2&tag=boot&tag=java
=> q=spring, page=2, tags=[boot, java]

GET /search/optional
=> q is empty

8. 条件付きマッピング:produces・params・headersでルートを出し分け

8. 条件付きマッピング:produces・params・headersでルートを出し分け
8. 条件付きマッピング:produces・params・headersでルートを出し分け

@GetMappingは、返却のコンテンツタイプやクエリパラメータ・ヘッダーの有無でルートを切り替えられます。クライアントのAcceptヘッダーに合わせたコンテンツ交渉も可能です。


import java.util.Map;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ReportController {

    // Accept: text/plain のときに選ばれる
    @GetMapping(value = "/report", produces = MediaType.TEXT_PLAIN_VALUE)
    public String reportText() {
        return "report: plain text";
    }

    // Accept: application/json のときに選ばれる
    @GetMapping(value = "/report", produces = MediaType.APPLICATION_JSON_VALUE)
    public Map<String, Object> reportJson() {
        return Map.of("type", "json", "result", "ok");
    }

    // ?preview=true が付いているときだけマッチ
    @GetMapping(value = "/feature", params = "preview=true")
    public String preview() {
        return "Preview Mode";
    }

    // カスタムヘッダーがあるときだけマッチ
    @GetMapping(value = "/secure", headers = "X-API-KEY")
    public String secure(@RequestHeader("X-API-KEY") String apiKey) {
        return "Authorized with key: " + apiKey;
    }
}

実行結果例


GET /report  (Accept: text/plain)
=> report: plain text

GET /report  (Accept: application/json)
=> {"type":"json","result":"ok"}

GET /feature?preview=true
=> Preview Mode

GET /secure  (X-API-KEY: abc123)
=> Authorized with key: abc123

まとめ

まとめ
まとめ

ここまで、Springフレームワークの@GetMappingアノテーションについて、基本的な使い方から応用的な活用方法まで解説しました。@GetMappingは、HTTP GETリクエストに対応したメソッドを簡単に定義できる強力なツールです。このアノテーションを使うことで、効率的にAPIを構築し、Webアプリケーションの機能を拡張することができます。

まず、単純な文字列のレスポンスから始めて、次に@RequestParamを用いたクエリパラメータの受け取り方法、@PathVariableを利用した動的なURLパスの構築、そしてJSON形式のレスポンスを返す方法について紹介しました。これらのテクニックを理解することで、柔軟でパワフルなAPIを構築することができます。

Springの@GetMappingアノテーションは、シンプルで直感的なHTTP GETリクエストの処理を可能にするため、これからWebアプリケーション開発に取り組む方にとって必須の知識です。また、他のHTTPメソッド(@PostMapping@PutMappingなど)との組み合わせにより、より多機能なアプリケーションを構築することもできます。引き続きSpringの豊富な機能を活用し、実際のプロジェクトに役立ててください。

以下は、今回の内容をまとめたサンプルコードです。実際の開発においては、これをベースにして多様なHTTPリクエストに対応できるように発展させてみましょう。


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;

@RestController
public class CombinedController {

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

    @GetMapping("/greet")
    public String greetUser(@RequestParam String name) {
        return "Hello, " + name + "!";
    }

    @GetMapping("/users/{id}")
    public String getUserById(@PathVariable int id) {
        return "User ID: " + id;
    }

    @GetMapping("/json")
    public Map<String, String> getJson() {
        return Map.of("message", "JSON Response", "status", "OK");
    }
}

実行結果例


GET /hello
=> Hello, Spring Framework!

GET /greet?name=John
=> Hello, John!

GET /users/789
=> User ID: 789

GET /json
=> {"message": "JSON Response", "status": "OK"}

このサンプルコードでは、@GetMappingを使った複数のエンドポイントが定義されています。URLのパスやクエリパラメータを活用して、動的なレスポンスを返す方法が学べましたね。

先生と生徒の振り返り会話

生徒

@GetMappingアノテーションについて、だいぶ理解できました!シンプルなエンドポイントからパラメータを使ったAPIまで色々できるんですね。」

先生

「その通り!@GetMappingを使うことで、GETリクエストに簡単に対応できるんだ。パラメータの受け渡しやJSONレスポンスも覚えたので、Web APIの基礎はバッチリだね。」

生徒

「これを応用すれば、ユーザー情報を取得したり、色々なデータを返すAPIも作れそうです!」

先生

「その意気だよ!次のステップとして、POSTリクエストに対応する@PostMappingや、データの更新・削除に使える@PutMapping@DeleteMappingも学んでいこう。」

生徒

「楽しみです!また教えてください!」

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

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

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

Springの@GetMappingアノテーションはどのようなときに使いますか?

@GetMappingアノテーションは、HTTP GETリクエストを処理するために使います。Webページを表示したり、APIからデータを取得する際に便利です。

GETリクエストとPOSTリクエストの違いは何ですか?

GETリクエストはデータをサーバーから取得するためのリクエストで、URLにパラメータを含めることができます。POSTリクエストは、サーバーにデータを送信する際に使用されます。

@GetMappingでパラメータを受け取るにはどうすればよいですか?

@RequestParamアノテーションを使うことで、クエリパラメータを受け取ることができます。例えば、URLのクエリパラメータとして?name=値を渡すことで処理できます。

@PathVariableと@RequestParamの違いは何ですか?

@PathVariableはURLパスに埋め込まれた値を受け取るために使い、@RequestParamはクエリパラメータを受け取るために使います。

@GetMappingでJSONレスポンスを返すにはどうすればよいですか?

メソッドの戻り値をMapやオブジェクト形式にすることで、Springが自動的にJSON形式でレスポンスを返します。

@GetMappingを使った複数のエンドポイントをどのように整理すればよいですか?

各エンドポイントに対応するメソッドをコントローラークラス内に分けて記述することで、コードの見通しが良くなり、管理が容易になります。

初心者がGETリクエストの基本を学ぶために、どのようなステップがおすすめですか?

まずは単純な文字列を返すメソッドを作成し、次にパラメータを受け取る方法やJSONレスポンスを試すなど、徐々に応用範囲を広げると良いです。

Spring MVCとSpring Bootの違いは何ですか?

Spring MVCはWebアプリケーションを構築するためのフレームワークで、Spring Bootは設定を簡素化して素早くアプリケーションを開発するためのツールセットを提供します。

@GetMappingを使ったサンプルコードの実行環境を教えてください。

Javaがインストールされている環境と、Spring Bootを利用するための依存関係を設定したプロジェクトが必要です。IDEとしてIntelliJ IDEAやEclipseを使うと便利です。

他のHTTPメソッド用アノテーションにはどのようなものがありますか?

@PostMapping、@PutMapping、@DeleteMappingなどがあり、それぞれHTTP POST、PUT、DELETEリクエストを処理するために使用されます。

クラスの@RequestMappingに末尾スラッシュの有無が混在すると問題になりますか?

環境や設定によっては別のパスとして扱われる場合があります。プロジェクト内で「末尾スラッシュは付けない」などのルールを決め、表記を統一するのが安全です。

メソッド側の@GetMappingで先頭スラッシュは必要ですか?

どちらでも動作しますが、クラスの@RequestMappingに続く「相対パス」を書くと重複スラッシュを回避できます(例:@RequestMapping("/api") と @GetMapping("users"))。
カテゴリの一覧へ
新着記事
JSPで改行やスペースを正しく表示する方法!HTMLとの連携ポイントも解説
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
Thymeleafのth:eachの使い方!ループ回数やindexなどの繰り返し処理を学ぼう
JavaのSpringで使う@Digitsアノテーション完全ガイド!初心者向けの数値バリデーション解説
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.3
Java&Spring記事人気No3
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.4
Java&Spring記事人気No4
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.5
Java&Spring記事人気No5
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
No.6
Java&Spring記事人気No6
Thymeleaf(タイムリーフ)入門!初心者でもわかるSpring Bootとテンプレートエンジンの使い方
No.7
Java&Spring記事人気No7
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス
No.8
Java&Spring記事人気No8
JavaのEnumクラスのordinalメソッドを徹底解説!初心者でもわかる列挙型の順序番号

💻 作業効率アップに

長時間のコーディングでも疲れにくい♪ 静音ワイヤレスマウス

Logicool Signature M750 を見る

※ Amazon広告リンク