【SpringBoot】URLとクラスやメソッドをマッピングする@RequestMappingアノテーションを解説します

Java

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

この記事では、 SpringBootでURLとクラスやメソッドをマッピングできる@RequestMappingアノテーションについて

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

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

前提:実施している環境

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

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の@RequestMappingアノテーションを解説

@RequestMappingアノテーションとは

@RequestMappingアノテーションとは、URLとコントローラーのクラスまたはメソッドを紐づけることができるアノテーションです。

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

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

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

指定できる属性の

  • value属性
  • method属性

について、それぞれ詳しく解説します。

@RequestMappingアノテーションの属性:value属性

@RequestMappingアノテーションの属性のvalue属性は、メソッドやクラスに紐づけるURLのパスを指定する属性です。

だと【http://localhost:8080/sample】というURLとsampleメソッドを紐づける、という意味です。
最初の「/」は省略してもOKです。

もしURLのパスのみを指定する場合は

と、属性名の「value」を省略してもOKです。

また、value属性には複数のURLのパスを指定することもできます。
書き方は

です。
この場合

  • http://localhost:8080/sample
  • http://localhost:8080/test

のURLのパスとsampleメソッドを紐づけています。

@RequestMappingアノテーションの属性:method属性

@RequestMappingアノテーションの属性のmethod属性は、GET、POSTといったHTTPリクエストを指定する属性です。
先ほどの

だと【http://localhost:8080/sample】のURL、かつGETリクエストだとsampleメソッドに紐づける、という意味です。

method属性に指定できるものは以下になります。

POSTを指定 RequestMethod.POST
GETを指定 RequestMethod.GET

これらを指定するためには

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

なお、method属性はクラスに@RequestMappingアノテーションつける場合は、指定しません。

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

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

@RequestMappingアノテーションを解説するプログラムでは、
value属性にURLのパスを2つ、method属性でGETを指定したメソッドを1つ作成します。

  • value属性に指定したURLのパス2つともでアクセスできること
  • method属性に指定しなかったPOSTでアクセスできないこと

を確認します。

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

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

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

Javaサンプルプログラム

実行結果

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

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

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

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

まず、「value属性に指定したURLのパス2つともでアクセスできること」を確認します。
【http://localhost:8080/hello】のURL、かつGETでリクエストを投げると、HTTPステータスが正常の200、

Hello World!

が返されているので、アクセスできていることが確認できました。
SpringBootの@RequestMappingアノテーションを解説

【http://localhost:8080/world】のURL、かつGETでリクエストを投げると、こちらもHTTPステータスが200で

Hello World!

と同じレスポンスが返ってきているので、アクセスできていることが確認できました。
SpringBootの@RequestMappingアノテーションを解説

指定したものとは異なる【http://localhost:8080/aaa】のURL、かつGETでリクエストを投げると、HTTPステータスが404で

と、このURLは存在しないとエラーが返ってきているので、アノテーションで指定していないURLにはアクセスできていないことが確認できました。
SpringBootの@RequestMappingアノテーションを解説

2つ目の「method属性に指定しなかったPOSTでアクセスできないこと」を確認します。
【http://localhost:8080/hello】のURL、かつPOSTでリクエストを投げると、HTTPステータスが405で、

と、このURLではPOSTは受け付けないとエラーが返ってきているので、アノテーションで指定していないPOSTではアクセスできていないことが確認できました。
SpringBootの@RequestMappingアノテーションを解説

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

以上がSpringBootのURLとクラスやメソッドをマッピングする@RequestMappingアノテーションについての解説でした!

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

コメント

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