【SpringBoot】POSTリクエストをマッピングする@PostMappingアノテーションを解説します

Java

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

この記事では、 SpringBootでPOSTリクエストをマッピングできる@PostMappingアノテーションについて

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

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

前提:実施している環境

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

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

@PostMappingアノテーションとは

@PostMappingアノテーションとは、POSTリクエストのみをURLとコントローラーのクラスまたはメソッドを紐づけることができるアノテーションです。
要は@PostMappingアノテーションは、@RequestMappingアノテーションのPOSTリクエスト用のアノテーションです。
@RequestMappingアノテーションについては、こちらの記事をご参考ください。

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

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

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

value属性は、メソッドやクラスに紐づけるURLのパスを指定する属性です。

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

属性名の「value」は

と、省略してもOKです。

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

です。
この場合POSTリクエストの

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

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

@RequestMappingアノテーションだとあったmethod属性は、@PostMappingアノテーションにはありません。

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

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

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

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

を確認します。

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

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

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

Javaサンプルプログラム

実行結果

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

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

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

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

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

Hello World!

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

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

Hello World!

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

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

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

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

と、【HttpRequestMethodNotSupportedException】という特定のリクエストメソッドをサポートしていない場合にスローされる例外が返ってきています。
@PostMappingアノテーションだと、GETではアクセスすることができないことが確認できました。
SpringBootの@PostMappingアノテーションを解説

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

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

@PostMappingアノテーションと対をなす、GETリクエストを受け付ける@GetMappingアノテーションというものもあります。
詳しくはこちらの記事をご参考ください。

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

コメント

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