カテゴリ: Spring 更新日: 2026/01/14
PR
独学でJavaを学んでいる方向け
「実務レベルに到達できるか不安」「1人だと詰まることが多い」場合は、 実践重視で学べる環境を一度確認しておくのも一つの手です。
EBAエデュケーション |学習内容・サポートを見る

【超入門】Spring BootのGETとPOSTをやさしく解説!使い分けと実装がこれだけで分かる

SpringのGETとPOST
SpringのGETとPOST

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

生徒

「Spring BootでGETとPOSTの違いは知っているつもりなんですが、実際のサービスだとどう使い分ければいいのかイメージできません。」

先生

「イメージがつかみにくいとよく言われますね。簡単に言うと、読むときはGET、何かを送ってサーバーの状態を変えるときはPOSTです。たとえば、ネットショッピングなら、商品を見ているときはGET、注文ボタンを押して情報を送るときはPOSTですね。」

生徒

「なるほど!では、プロフィール更新みたいに『入力フォームを開く→保存』の場合はどうですか?フォームを開くのはGETで、保存してDBに書き込むのはPOST、という感じですか?」

先生

「その通り!フォーム表示はGETで、送信して更新処理を行うのがPOSTです。Spring Bootだと@GetMapping@PostMappingを使い分けるだけなので、実装も覚えやすいですよ。」

1. GETとPOSTの違いとは?

1. GETとPOSTの違いとは?
1. GETとPOSTの違いとは?

まずは「何をするときにどちらを使うか」をイメージで押さえましょう。GETデータを取りに行く(読む)ためのリクエスト、POSTデータを送り込む(書く)ためのリクエストです。日常の例で言うと、 メニューを見るのがGET、注文票を渡すのがPOSTという感覚です。

GETメソッドはURLに条件(クエリ)を付けてサーバーに「見せて」と頼みます。 ページ閲覧や検索に向いており、基本的にサーバーの中身を変えません(安全・冪等)。 例えば次のようにURLだけで動きます。


# 例:ユーザー名で検索(URLに条件を付ける)
curl "http://localhost:8080/users?keyword=taro"
  
  • URLに条件が見えるので、ブックマークや共有が簡単
  • ブラウザやプロキシのキャッシュが効きやすい。
  • URL長に上限があるため、送れるデータは少量が前提。

POSTメソッドはリクエストの本文(ボディ)にデータを入れて送ります。 登録・更新・ログインなど、サーバーの状態が変わる処理に使います。 たくさんの項目やファイルも送れ、URLはすっきりしたままです。


# 例:新規ユーザーを登録(本文にデータを入れる)
curl -X POST "http://localhost:8080/register" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=taro&email=taro@example.com"
  
  • 本文に載せるため大量のデータを扱える(フォーム送信に最適)。
  • URLに値が出ないので、情報が露出しにくい(ただしHTTPSは必須)。
  • 再送で重複登録を生みやすいので、後述の対策(トークン等)を考えるのが定石。
初心者向け・使い分けの超シンプル基準
  • 読むだけ(検索・一覧・詳細)→ GET
  • サーバーの中身が変わる(登録・更新・削除・ログイン)→ POST
  • URLに条件を残して再現したい(共有・履歴)→ GET
  • 入力項目が多い・ファイルを送る → POST

要点は「GET=取得、POST=送信」。まずはこの軸で迷わず選べれば十分です。 以降の実装では、@GetMapping@PostMappingに当てはめるだけで、 同じ考え方のままコードへ落とし込めます。

2. Spring BootでのGETリクエスト: @GetMapping

2. Spring BootでのGETリクエスト: @GetMapping
2. Spring BootでのGETリクエスト: @GetMapping

@GetMappingは「ページを見る・情報を取りに行く」ための入り口です。基本の流れは URLに条件を付ける → コントローラで受け取る → 画面(ビュー)に渡すの3ステップ。 まずはクエリパラメータ(?name=...の形)を受け取って、画面にメッセージを表示する超シンプルな例から始めましょう。


<!-- コントローラー: HelloController.java -->
@Controller
public class HelloController {

    // ① クエリパラメータを受け取る例(/hello?name=Java)
    @GetMapping("/hello")
    public String hello(
            @RequestParam(name = "name", defaultValue = "World") String name,
            Model model) {

        model.addAttribute("message", "Hello, " + name + "!");
        return "hello"; // hello.html を表示
    }
}

上の例では、/hello?name=Javaとアクセスすると「Hello, Java!」が表示されます。 defaultValueを指定しているので、nameが無いときは自動的に「World」を使います。 画面テンプレート(Thymeleaf等)ではmessageをそのまま埋め込めばOKです。

よくある受け取り方(初心者がまず覚える3パターン)
  • クエリパラメータ:/search?keyword=taro@RequestParam("keyword")
  • パス変数:/users/10@PathVariable Long id(URLの一部を変数として受け取る)
  • 固定ページ:条件なしで表示する案内ページなど → 引数なしの@GetMapping
パス変数の基本(ID付き詳細ページなど)

<!-- コントローラー: UserViewController.java -->
@Controller
@RequestMapping("/users")
public class UserViewController {

    // ② パス変数を受け取る例(/users/10)
    @GetMapping("/{id}")
    public String detail(@PathVariable("id") Long id, Model model) {
        // 本来はサービスやリポジトリからユーザー情報を取得
        model.addAttribute("message", "ユーザーID: " + id + " の詳細ページです。");
        return "user-detail"; // user-detail.html
    }
}

/users/10のようにURLの一部を変数にすると、「一覧→詳細」の画面遷移が作りやすくなります。 まずは「IDを受け取って文字を表示する」だけでも十分な練習になります。

ミニTips(つまずきやすいポイント)
  • 必須・任意の切り替え:@RequestParam(required = false)で任意にできます。未指定の場合はnulldefaultValueを活用。
  • URLで再現しやすい:検索条件をURLに残せるので、ブックマークや共有に向いています。
  • サーバー変更はしない:GETは取得専用。登録や更新は次章の@PostMappingを使います。
確認用の超短いリクエスト例(ターミナルから)

# クエリパラメータで名前を渡す
curl "http://localhost:8080/hello?name=Spring"

# パス変数でIDを渡す
curl "http://localhost:8080/users/10"

まずは「URLに条件を付け→コントローラで受け取り→ビューへ渡す」だけを何度か繰り返してみてください。 Spring BootのGETは、書くコードが少なく挙動も分かりやすいので、最初の一歩に最適です。

PR

将来を見据えて、+αのスキルを身につけたい方へ

JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。

AIを学ぶならアイデミープレミアム

3. Spring BootでのPOSTリクエスト: @PostMapping

3. Spring BootでのPOSTリクエスト: @PostMapping
3. Spring BootでのPOSTリクエスト: @PostMapping

フォームなどのデータをサーバーに送信する際には、@PostMappingを使います。以下の例では、ユーザー名とメールアドレスを送信し、サーバー側で受け取るコードを示します。


<!-- コントローラー: UserController.java -->
@Controller
public class UserController {

    @PostMapping("/register")
    public String register(@RequestParam String username, @RequestParam String email, Model model) {
        model.addAttribute("message", "User " + username + " with email " + email + " registered successfully.");
        return "register";
    }
}

このコードに対して、フォームからPOSTリクエストを送信すると、ユーザー名とメールアドレスを受け取ることができます。

4. GETとPOSTの使い分け

4. GETとPOSTの使い分け
4. GETとPOSTの使い分け

GETとPOSTの使い分けは、基本的に次のルールに従います。

  • データの取得にはGETを使います。データを取得するだけで、サーバーの状態を変更しない場合に使います。
  • データの送信にはPOSTを使います。フォームデータやアップロードデータをサーバーに送る場合、またはサーバーの状態を変更する操作(例: データの登録や更新)に使います。

例えば、ユーザーの検索はGETリクエストで行い、ユーザーの登録や更新はPOSTリクエストで行うのが一般的です。

5. GETとPOSTの実際の使い方の例

5. GETとPOSTの実際の使い方の例
5. GETとPOSTの実際の使い方の例

最後に、GETとPOSTを使ったフォームの実際の例を見てみましょう。

GETリクエストのフォーム例


<!-- HTML: getForm.html -->
<form action="/hello" method="get">
    <input type="text" name="name" placeholder="Enter your name" />
    <button type="submit">Say Hello</button>
</form>

POSTリクエストのフォーム例


<!-- HTML: postForm.html -->
<form action="/register" method="post">
    <input type="text" name="username" placeholder="Enter your username" />
    <input type="email" name="email" placeholder="Enter your email" />
    <button type="submit">Register</button>
</form>

これらのフォームを使えば、GETとPOSTの使い方の違いが実際に確認できます。GETフォームは主に検索やクエリのために、POSTフォームはデータ送信のために使用します。

6. まとめ

6. まとめ
6. まとめ

この記事では、Spring Bootを使ったGETリクエストとPOSTリクエストの基本的な使い方について詳しく解説しました。それぞれのHTTPメソッドの特徴や用途、具体的な実装例を通じて、初心者でも理解しやすいように構成しました。

GETリクエストは、主にデータをサーバーから取得するために使用され、URLにパラメータを付加してリクエストを送信します。一方、POSTリクエストは、サーバーにデータを送信するために使用され、フォームデータやファイルの送信に適しています。これらの違いを理解することで、正しいHTTPメソッドを適切な状況で使用できるようになります。

また、Spring Bootでの実装方法として、@GetMapping@PostMappingを使用する方法を紹介しました。それぞれのアノテーションを使うことで、GETやPOSTのリクエストを簡単に処理できます。特に、GETリクエストではURLからクエリパラメータを受け取り、POSTリクエストではフォームデータを受け取る実装例を示しました。

以下に、この記事の内容を整理したサンプルコードを掲載します。GETとPOSTの使い方の違いをさらに深く理解するために活用してください。


<!-- GETリクエスト: HTML -->
<form action="/hello" method="get">
    <input type="text" name="name" placeholder="名前を入力" />
    <button type="submit">送信</button>
</form>

<!-- POSTリクエスト: HTML -->
<form action="/register" method="post">
    <input type="text" name="username" placeholder="ユーザー名" />
    <input type="email" name="email" placeholder="メールアドレス" />
    <button type="submit">登録</button>
</form>

<!-- GETリクエスト: コントローラー -->
@GetMapping("/hello")
public String hello(@RequestParam(name = "name", defaultValue = "ゲスト") String name, Model model) {
    model.addAttribute("message", "こんにちは、" + name + "さん!");
    return "hello";
}

<!-- POSTリクエスト: コントローラー -->
@PostMapping("/register")
public String register(@RequestParam String username, @RequestParam String email, Model model) {
    model.addAttribute("message", username + "さんの登録が完了しました(メール: " + email + ")。");
    return "register";
}

このように、GETリクエストではデータの取得、POSTリクエストではデータの送信といった用途に応じて使い分けることが重要です。また、GETリクエストはURLにデータを含めるため公開性が高い一方、POSTリクエストはデータがリクエストボディに含まれるため、よりセキュアな用途に向いています。

この記事を参考に、GETとPOSTの使い方を理解し、実際のプロジェクトで活用してみてください。Spring Bootの強力なアノテーション機能を使えば、効率的なリクエスト処理が可能になります。

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

生徒

「GETとPOSTの違いがよくわかりました!GETはデータを取得するため、POSTはデータを送信するためなんですね。」

先生

「その通りです。それぞれのHTTPメソッドの役割を理解することが、ウェブアプリケーション開発の基礎となります。」

生徒

「Spring Bootでの実装も簡単ですね。アノテーションを使うだけでリクエストを処理できるのが便利です。」

先生

「はい。GETとPOSTを使い分けることで、適切なリクエスト処理を実現できます。次回はPUTやDELETEといった他のHTTPメソッドについても学んでみましょう。」

生徒

「ぜひ学びたいです!ウェブアプリケーション開発がもっと楽しくなりそうです。」

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

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

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

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

GETリクエストはデータを取得するために使用され、URLにパラメータを付けて送信します。一方、POSTリクエストはデータを送信するために使われ、フォームデータなどをリクエストボディに含めて送信します。

Spring BootでGETリクエストを処理する方法を教えてください。

Spring Bootでは、@GetMappingを使用してGETリクエストを処理します。例えば、URLからクエリパラメータを受け取る場合、@RequestParamを使用します。

POSTリクエストをSpring Bootで処理するにはどうすればよいですか?

POSTリクエストを処理するには、@PostMappingを使用します。フォームデータやファイルの送信を受け取る際に便利です。

GETとPOSTの使い分けはどのように行いますか?

基本的には、データを取得する場合はGETを、データをサーバーに送信する場合はPOSTを使用します。検索機能はGET、フォームデータの登録はPOSTを使うのが一般的です。

GETリクエストのデータ量には制限がありますか?

はい、GETリクエストではURLにパラメータを付加するため、ブラウザやサーバーによる制限があります。通常は2048文字以内に収めることを推奨します。

POSTリクエストはどのような場合に使用しますか?

POSTリクエストは、フォームデータやファイルをサーバーに送信する場合、またはデータの作成・更新など、サーバーの状態を変更する操作で使用します。

Spring BootでフォームをGETリクエストとして送信する方法を教えてください。

フォームにmethod="get"を設定することで、フォームデータをGETリクエストとして送信できます。Spring Bootのコントローラー側では、@GetMappingで処理します。

フォームをPOSTリクエストとして送信する際、データをどのように受け取りますか?

フォームのデータは@RequestParamを使用してコントローラーで受け取ります。データを処理した後、ビューに結果を返すことができます。

Spring BootでGETとPOSTの実際の使い方を教えてください。

GETリクエストでは検索機能やURLパラメータの取得に使用し、POSTリクエストではフォームデータの送信やサーバーの状態変更に使用します。@GetMappingと@PostMappingを活用してください。

Spring BootでGETとPOSTを効率的に使い分けるコツは何ですか?

GETはリード操作(データの読み取り)、POSTはライト操作(データの書き込み)に使用するのが一般的です。また、GETはURLの構造が分かりやすいので、データ取得のリクエストに適しています。

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

Spring Framework超入門をAmazonで見る

※ Amazonアソシエイト・プログラムを利用しています

関連記事:
カテゴリの一覧へ
新着記事
PR

JavaやLinuxの検証環境に
低コストで使えるVPS

Spring Bootとは?初心者向けにわかりやすく解説【Spring入門】
Spring MVCの@PathVariableと@RequestParamを完全解説!初心者向けの使い分け・必須/任意・型変換・デフォルト値まで
Spring Bootプロジェクトの作成ガイド!EclipseとGradleを使った初心者向け手順
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
PR 未経験からITエンジニアを目指す方へ

Javaを学んでいるけど、「このまま未経験で就職できるか不安」という20代向け。 学歴不問・無料サポートの就職支援という選択肢があります。

Tamesy |無料で面談予約
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
JavaのIntegerクラスparseIntメソッド完全ガイド!初心者でもわかる文字列から数値変換
No.3
Java&Spring記事人気No3
JavaのArrayListクラスとgetメソッドを完全解説!初心者でもわかるリストの要素取得
No.4
Java&Spring記事人気No4
JavaのEnumクラスのordinalメソッドを徹底解説!初心者でもわかる列挙型の順序番号
No.5
Java&Spring記事人気No5
Spring BootのMultipartFile入門:ファイルアップロード・ダウンロードの実装方法と制限設定
No.6
Java&Spring記事人気No6
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.7
Java&Spring記事人気No7
Thymeleafのth:classappend属性の使い方を完全ガイド!初心者でもわかる動的クラス追加
No.8
Java&Spring記事人気No8
Spring BootのJakarta移行ガイド!初心者向けjavax→jakarta変更ポイント徹底解説
PR

ローカルPCに依存しない開発環境という選択肢

Java・Linuxの検証や学習環境を、クラウド上ですぐに用意できます。

Java入門

Javaの基礎を体系的に学びたい場合は、文法だけでなく 「なぜそう書くのか」まで丁寧に解説されているため、 初心者でも理解しやすい定番の1冊です。

スッキリわかるJava入門 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Java実践

ジェネリクス、enum、シールクラスなどの型設計から、 関数型プログラミング(ラムダ式・Stream API)、 JVM制御やリフレクション、外部ライブラリの活用までを扱っており、 「Javaを使えるレベル」へ進むための内容が網羅されています。

スッキリわかるJava入門 実践編 第4版

※ 紙の書籍・電子書籍どちらでも購入できます

Spring入門

Spring Frameworkの全体像から、 Webアプリ開発で必要となる主要機能までを 体系的に解説している定番の入門書です。

Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発

※ 紙の書籍・電子書籍どちらでも購入できます

PR 実務経験のあるエンジニア向け

Javaなどの実務経験があり、次のキャリアを検討している方向け。 IT・ゲーム業界に特化した転職支援サービスという選択肢もあります。

転職ボックス |IT・ゲーム業界専門