springboot

SpringBootの@RequestMapping、@PostMapping、@GetMapping、@DeleteMapping、@PutMappingの違いをわかりやすく解説します。

2019年11月12日

 

あなた
SpringBootを使っていると@RequestMappingとか@PostMappingとか@GetMappingtとかよく見かけるけどいったいこれは何?

 

これからSpringBootで開発するのならここの理解は必須だね!説明するよ
てんし君

 

こんな方におすすめ

  • SpringBoot学習者
  • @RequestMapping@PostMapping@GetMappingの違いや使い方を知りたい方

 

SpringBotの@〇〇Mappingは看板付きの入り口

 

ここでは初学者向けにイメージを持ってもらうためにざっくりした説明をした後に少し細かい説明もしていきます。

 

まず簡単に言うとSpringBootの@〇〇Mappingとは外部からのアクションに対するプログラムの処理の入り口です。

(厳密に言えばコントローラーより前にも動くものがあるのですが、まずはコントローラーが入り口だと思ってもらえればいいです。)

 

イメージとしては遊園地を思い浮かべるといいと思います。

 

みんな大好きディ○ニーランドにも入り口はありますよね。

そしてテーマパークを構成するアトラクションや売店、コインロッカーなどの施設にも当然入り口はあります。

 

コントローラクラスの@Mappingはどんな場所かを教えてくれる看板付きの入り口です!

 

 

あなた
場所がわかれば迷うことなさそう!
入るまで何かわからない場所って怖いもんねw
てんし君

 

アトラクション=処理

 

実際に@RequestMapping、@GetMapping、@PostMapping、@DeleteMapping、@PutMappingを使用しているコントローラクラスのコードを見てみましょう。

 

ここでは記述のされ方と使われ方をなんとなく理解できればいいです。

 

コントローラクラス

/**

* コントローラクラスであることの宣言

*/

@RestController

/**

* リクエストURLに対しての処理メソッド定義

*/

@RequestMapping("/messages")

public class MessageController {

/**

* 他クラス呼び出し

*/

@Autowired

private MessageService messageService;

/**

* RequestmappingのGet拡張(全件取得)

*/

@GetMapping

public Collection<Message> getMessages() {

return messageService.getMessages();

}

/**

* RequestmappingのGet拡張(idごとの取得)

*

* @throws NotFoundException

*/

@GetMapping("/{id}")

public Optional<Message> getMessageById(@PathVariable String id) throws NotFoundException {

return messageService.getMessageById(id);

}

/**

* RequestmappingのPost拡張(登録)

*/

@PostMapping

public Message postMessage(@RequestBody @Validated Message message) {

return messageService.createMessage(message);

}

/**

* RequestmappingのDelete拡張(idごとの削除)

*

* @throws NotFoundException

*/

@DeleteMapping("/{id}")

public Optional<Message> deleteMessageById(@PathVariable String id) throws NotFoundException {

return messageService.deleteMessageById(id);

}

/**

* RequestmappingのPut拡張(idごとの更新)

*

* @throws NotFoundException

*/

@PutMapping("/{id}")

public Optional<Message> updateMessageById(@PathVariable String id,

@RequestBody MessageUpdatePayload messageUpdatePayload) throws NotFoundException {

return messageService.updateMessageById(id, messageUpdatePayload);

}

}

 

次からはそれぞれの@〇〇Mappingの意味や使い方を説明していきます。

 

SpringBootの@RequestMappingの役割

 

@RequestMappingは全体の処理の入り口です。

テーマパークのメインゲートです。

ここを通ることでいろんな処理の場所にいくことができます。

ちなみに@RequestMapping("/messages")と書かれている("/messages")はURLを指定しています。

このアプリケーションの処理が行われるときは必ずhttp://ドメイン/messsages/******となることを示しています。

 

〇〇Mapping のあとの("")部分はそのURLにリクエストあったときにそれぞれの処理が行われると言うことは頭に入れておきましょう。

 

まとめ

@RequestMappingは全体の処理(テーマパーク)の入り口

 

SpringBootの@GetMappingの役割

 

@RequestMappingは全体の入り口でした。

@GetMappingはGETの処理を行うプログラムの入り口です。

GETというのは文字通り「取得」の役割をはたす部分です。

登録されているデータを取って来たりします。

 

まとめ

@GetMappingは取得の処理(アトラクション)を示している入り口

 

@GetMapping←入り口

↓実際の処理(アトラクション)↓

public Collection<Message> getMessages() {

return messageService.getMessages();

}

 

あなた
@GetMappingって書くだけでいいなんて便利だなぁ
Eclipseを使ってるんだったらF3をおすと@GetMappingの本質的な部分が見れるよ!
てんし君

 

F3を押したときに表示されるクラスの中身です。

@RequestMappingがGETのメソッド(実際の処理)を指定しているのが分かりますね。

本来はこのように記述しなければならないものをSpringBootというフレームワークが@GetMappingと書くだけでいいよー!といってくれているのです。

 

SpringBootありがとう!!

同様にして見ていきましょう。

 

SpringBootの@PostMappingの役割

 

@PostMappingはPOSTの処理を行うプログラムの入り口です。

GETというのは文字通り「投稿」の役割をはたす部分です。

新しいデータを登録したりします。

 

まとめ

@GetMappingは投稿の処理(アトラクション)を示している入り口

 

SpringBootの@DeleteMappingの役割

 

ここまで来たらなんとなくわかって来ましたよね。

@DeleteMappingはDELETEの処理を行うプログラムの入り口です。

DELETEというのは文字通り「削除」の役割をはたす部分です。

既存のデータを削除します。

 

まとめ

@DeleteMappingは既存データの削除処理(アトラクション)を示している入り口

 

SpringBootの@PutMappingの役割

 

@PutMappingはPutの処理を行うプログラムの入り口です。

PUTというのは少しイメージがつきづらいですが「更新」の役割をはたす部分です。

既存のデータや情報を上書きします。

 

まとめ

@PutMappingはアップデートの処理(アトラクション)を示している入り口

 

SpringBootならCRUDが簡単に実装できる

 

余談になりますがこの@Mappingの役割はプログラムを作っていく上で非常にありがたい仕組みです。

基本操作であるCreate,Read,Update,Deleteが実装しやすいからです。

SpringBootをを使う方はフレームワークに感謝しながら、同時に裏側ではどんな処理が行われているかを意識しながら開発すると力になりやすいですよ!

 

是非楽しんでください★

 

プログラミングスクールに関する情報

【無料あり】プログラミングスクールおすすめランキング【WEBエンジニアになりたい方向け】と書かれた画像
【無料あり】プログラミングスクールおすすめランキング【WEBエンジニアになりたい方向け】

  あなたプログラミングスクールに通いたいけどたくさんありすぎてどこがいいのかわかりません。   最近はエンジニアブームということもありプログラミングスクールが増えました。 一方でたくさんありすぎてど ...

続きを見る

返金保証ありのプログラミングスクールランキング【エンジニアが選びました】と表示されたパソコンの画面
【転職保証つき】返金保証ありのプログラミングスクールランキング【エンジニアが選びました】

  あなた返金保証がついているオススメのプログラミングスクールってありますか?   結論から話すと、返金保証つきのプログラミングスクールランキングは次の通りです。   1位:DMMWEBキャンプ  【 ...

続きを見る

wordpress
【無料あり】WEB制作を学べるオンラインスクールランキング【副業で稼ぎたい方向け】

  あなたWeb制作の副業で稼ぎたいけど、どのスクールで学ぶのが良いの? スクール選びで失敗はしたくないです。   ↑このような疑問や不安を解決するべく、現役のWebエンジニアがWEB制作を学べるスク ...

続きを見る

フリーランス
無料あり:フリーランスを目指せるプログラミングスクールランキング【体験をもとに徹底分析しました】

  あなたフリーランスエンジニアを目指すことができるプログラミングスクールってありますか?   最近では、高年収や働きやすさの魅力からフリーランスエンジニアを目指す方も増えてきました。 結論から話すと ...

続きを見る

WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】と書かれた画像
WEB系自社開発企業にいけるプログラミングスクールランキング【現役エンジニアおすすめ】

  あなたWEB系の自社開発企業に就職したいです。 オススメのスクールを教えて下さい。   結論から話すと、WEB系自社開発に行きやすいスクールのランキングは以下の通り。   第1位:テックアカデミー ...

続きを見る

-springboot

S