こんな方におすすめ
- SpringBoot学習者
- @RequestMapping@PostMapping@GetMappingの違いや使い方を知りたい方
SpringBotの@〇〇Mappingは看板付きの入り口
ここでは初学者向けにイメージを持ってもらうためにざっくりした説明をした後に少し細かい説明もしていきます。
まず簡単に言うとSpringBootの@〇〇Mappingとは外部からのアクションに対するプログラムの処理の入り口です。
(厳密に言えばコントローラーより前にも動くものがあるのですが、まずはコントローラーが入り口だと思ってもらえればいいです。)
イメージとしては遊園地を思い浮かべるといいと思います。
みんな大好きディ○ニーランドにも入り口はありますよね。
そしてテーマパークを構成するアトラクションや売店、コインロッカーなどの施設にも当然入り口はあります。
コントローラクラスの@Mappingはどんな場所かを教えてくれる看板付きの入り口です!
実際に@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();
}
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をを使う方はフレームワークに感謝しながら、同時に裏側ではどんな処理が行われているかを意識しながら開発すると力になりやすいですよ!
是非楽しんでください★