カテゴリ: Spring 更新日: 2025/11/14

【超入門】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

Spring Bootでは、@GetMappingを使ってGETリクエストを受け取ります。次の例では、URLからクエリパラメータを受け取って表示します。


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

    @GetMapping("/hello")
    public String hello(@RequestParam(name = "name", defaultValue = "World") String name, Model model) {
        model.addAttribute("message", "Hello, " + name + "!");
        return "hello";
    }
}

このコードでは、/hello?name=Javaというリクエストに対して「Hello, Java!」と表示するページをレンダリングします。@GetMappingを使うことで、簡単にGETリクエストを処理できます。

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の構造が分かりやすいので、データ取得のリクエストに適しています。
カテゴリの一覧へ
新着記事
JavaのHttpServletResponseWrapperを完全解説!初心者でも理解できるレスポンス処理のしくみ
JavaのScannerクラスの使い方を徹底解説!初心者でも簡単に学べる入力処理
JavaのArrayListクラスとaddメソッドを完全解説!初心者でもわかるリスト操作
Javaの@Idアノテーションを徹底解説!初心者でもわかるデータベースとの連携方法
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.5
Java&Spring記事人気No5
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法
No.8
Java&Spring記事人気No8
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説