【SpringBoot】リクエストパラメータを取得できるようにする@RequestParamアノテーションを解説します

Java

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。

この記事では、 SpringBootでリクエストパラメータを取得できるようにする@RequestParamアノテーションについて

  • @RequestParamアノテーションとは
  • @RequestParamアノテーションを使ったサンプルプログラム

と、丁寧に解説していきます。

前提:実施している環境

この記事では、以下の環境で行っています。

OS Windows10
IntelliJ IDEAのエディション Community(無料版)
IntelliJ IDEAのバージョン 2021.3.2
プロジェクト Gradle Project
言語 Java バージョン11
フレームワーク Spring Boot バージョン2.6.3

Spring Bootを動かすためにIntelliJ IDEAを使っています。
IntelliJ IDEAのインストールとSpring Bootプロジェクトを新規作成するやり方はこちらの記事をご参考ください。

この記事では

C:\SpringBootSample

配下に「SpringSample」という名前のプロジェクトを作っています。
SpringBootの@PostMappingアノテーションを解説

@RequestParamアノテーションとは

@RequestParamアノテーションとは、リクエストパラメータを定義して取得できるようにするアノテーションです。

@RequestParamアノテーションを使うためには

をインポートする必要があります。

@RequestParamアノテーションの使い方サンプルは以下になります。

このサンプルでは、【http://localhost:8080/sample?test=Java】でGETリクエストを投げた場合、sampleメソッドの引数testには「Java」という値が設定されます。
@RequestMappingアノテーションは、リクエストをマッピングするアノテーションです。
詳しくはこちらの記事をご参考ください。

@RequestParamアノテーションで指定できる属性の

  • name属性、value属性
  • required属性
  • defaultValue属性

について、それぞれ詳しく解説します。
※name属性、value属性は同じ機能を持っているので一緒に解説します。

@RequestParamアノテーションの属性:name属性、value属性

@RequestParamアノテーションの属性のname属性value属性は、リクエストパラメータを指定する属性です。
どちらも使っても同じ効果を得ることができます。
片方だけを使っても良いですし、両方使っても問題ありません。

だと「test」というリクエストパラメータに紐づく値をsampleメソッドの引数testに設定します。

name属性、value属性両方を使う場合に注意点があります。
それは、設定する値は必ず同じものを使う必要がある、という点です。

たとえば

だとコンパイルは通るものの実行した場合

という例外が発生します。

@RequestParamアノテーションの属性:required属性

@RequestParamアノテーションの属性のrequired属性は、そのリクエストパラメータは必須かどうかを指定する属性です。
trueならば必須、falseならば必須ではありません。
デフォルトはtrueです。

使い方サンプルの

required属性はfalseなのでこの場合

  • http://localhost:8080/sample
  • http://localhost:8080/sample?test=Java

どちらも正常に実行することができます。

@RequestParamアノテーションの属性:defaultValue属性

@RequestParamアノテーションの属性のdefaultValue属性は、リクエストパラメーターが指定されていない、または空の場合に設定されるデフォルト値を指定する属性です。
もしdefaultValue属性を指定している場合、required属性にtrueを設定していてもfalseとなります。

使い方サンプルの

【http://localhost:8080/sample】とリクエストパラメータを設定しなかった場合、sampleメソッドの引数testには「テスト」が設定されます。

では、次の章で実際に使ってみます。

@RequestParamアノテーションを解説するプログラムの概要

@RequestParamアノテーションを解説するプログラムでは、

  • 全属性を指定
  • name属性のみを指定

という引数を持つメソッドを1つ作成します。

  • 指定したリクエストパラメータを取得できていること
  • 全属性を指定を指定したリクエストパラメータを設定しなかった場合defaultValue属性に指定した値が設定されていること
  • name属性のみを指定したリクエストパラメータを設定しなかった場合エラーとなること

を確認します。

解説で使うJavaプログラムは、

SpringSample\src\main\java\com\example\SpringSample

配下にある【SpringSampleApplication.java】を使います。
SpringBootの@RequestParamアノテーションを解説

Javaサンプルプログラム

実行結果

プロジェクトを実行するやり方は

  • プログラムを右クリックして実行
  • 実行タブから実行
  • ガターから実行

の3種類あるので、いずれかで実行します。
詳しい解説は以下の記事をご参考ください。

今回、確認するにあたりPostmanというツールを使います。
Postmanの基本的な使い方については、こちらの記事をご参考ください。

まず、「指定したリクエストパラメータを取得できていること」を確認します。
【http://localhost:8080/hello?name=Mike&id=123】のURL、かつGETでリクエストを投げると、HTTPステータスが正常の200、

ID:123 NAME:Mike

が返されているので、リクエストパラメータを取得できていることが確認できました。
SpringBootの@RequestParamアノテーションを解説

次に、「全属性を指定を指定したリクエストパラメータを設定しなかった場合defaultValue属性に指定した値が設定されていること」を確認します。
【http://localhost:8080/hello?id=123】のURL、かつGETでリクエストを投げると、HTTPステータスが正常の200、

ID:123 NAME:no name

が返されているのでリクエストパラメータを設定しなかった場合、defaultValue属性に指定した値が設定されていることが確認できました。
SpringBootの@RequestParamアノテーションを解説

最期に、「name属性のみを指定したリクエストパラメータを設定しなかった場合エラーとなること」を確認します。
【http://localhost:8080/hello?name=Mike】のURL、かつGETでリクエストを投げると、HTTPステータスが400で、

と、「id」リクエストパラメータが存在しないというとエラーが返ってきているので、required属性がtrueであった場合エラーとなることが確認できました。
SpringBootの@RequestParamアノテーションを解説

まとめ:@RequestParamアノテーションを使ってみよう!

以上がSpringBootのリクエストパラメータを取得できるようにする@RequestParamアノテーションについての解説でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました