Spring BootのPostMappingとRequestParamの違いと使い分けを初心者向けに徹底解説!
こんにちは。ゆうせいです。
Web開発の現場でよく登場する @PostMapping
と @RequestParam
。
Spring BootなどでWeb APIをつくっていると必ず出てくるキーワードですね。でも、初学者のうちはこの2つが「何をしているのか」「なぜ必要なのか」がよく分からなくなることもあると思います。
そこで今回は、これらのアノテーションの意味と使いどころを、具体例や図を交えて丁寧に解説していきます!
@PostMappingとは?
Webアプリの「郵便ポスト」だと思ってください!
@PostMapping
は、HTTP通信の「POSTリクエスト」に対応するメソッドを定義するときに使います。
POSTリクエストとは、ユーザーがフォームに入力したデータなどを、サーバーに「送信」するリクエストです。
たとえば、会員登録フォームで名前やメールアドレスを送るときがこれにあたります。
@PostMapping("/register")
public String registerUser(@RequestParam String name, @RequestParam String email) {
// 処理内容
return "success";
}
GETとPOSTの違いは?
HTTPメソッド | 主な用途 | URLにデータを含む? | データサイズ制限 |
---|---|---|---|
GET | 情報の取得 | はい(URLの後に) | 小さい |
POST | データの送信 | いいえ(本文に含む) | 大きいデータOK |
@RequestParamとは?
「リクエストの中から特定の値を取り出す」ための道具です!
@RequestParam
は、クライアントから送られてきたリクエストのパラメータ(名前付きの値)を、Javaメソッドの引数として受け取るために使います。
先ほどの例では、フォームから送られてくる name
と email
の値を @RequestParam
で受け取っていました。
@RequestParam String name
これは「リクエストの中にある name=〇〇
という値を、nameという引数に入れてください」という意味です。
たとえばURLでいうと…
POST /register?name=Yamada&email=yamada@example.com
このようなデータが送られてきたときに、@RequestParam
を使えば name
や email
をそれぞれ取り出すことができます。
なぜ @RequestParam が必要なのか?
明示的に「どこから値を取るのか」を指定するため!
Javaのメソッドは、ただ引数を書くだけではどこから値を取ればよいか分かりません。
「URLのパラメータから?」「本文のJSONから?」「ヘッダーから?」という疑問が生まれますよね。
そのため、@RequestParam
をつけて、「URLやフォームのパラメータから値を取ります」と明示してあげる必要があるんです!
例え話:郵便ポストと手紙の宛名
@PostMapping
→ 郵便ポスト。「ここに手紙(データ)を入れてね!」というポストの役割。@RequestParam
→ 手紙の宛名や内容。ポストの中から「誰から来た手紙か」「何が書いてあるか」を取り出すために必要な情報。
JSONでデータを送るときは?
ちなみに、JSON形式でデータを送る場合は @RequestParam
の代わりに @RequestBody
を使うことが多いです。
@PostMapping("/register")
public String registerUser(@RequestBody UserDto userDto) {
// userDto.getName() や userDto.getEmail() でアクセス
return "success";
}
このように、送信方法によって使うアノテーションが変わるのも重要なポイントです!
まとめ表
アノテーション | 役割 | 主な使い方 |
---|---|---|
@PostMapping | POSTリクエストを受け取る | フォーム送信、登録処理など |
@RequestParam | パラメータを受け取る | フォームやURLのクエリ文字列など |
@RequestBody | JSONやXMLなどのリクエスト本文を受け取る | APIでのデータ送信など |
今後の学習の指針
次のステップとしては以下のような学習をおすすめします。
@RequestBody
と DTO(データ転送オブジェクト)の使い方- バリデーション(
@Valid
など)による入力チェック - GETメソッドとの使い分けとREST APIの設計
実際にコードを書きながら学んでみると、理解がどんどん深まりますよ!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
