SpringBootを使っているとpostの処理をする時に@RequestBodyをつけることも多いです。
ある意味「お作法」のようになってしまっているかもしれませんが今回は@RequestBodyの役割についてまとめます。
@RequestBody の役割
SpringBootを学習している方なら一度は@RequestBodyとは何か調べたことがあると思います。
(んなもん生まれたときから知ってるとか、調べるまでもないという方はそっとこのページを閉じましょう)
ちなみに僕も@RequesrBodyってどんな意味があるんだろうと思って調べていました。
大抵の記事には「クライアントから送られてくる値を受け取る為のアノテーション」のようなことが書いてありますよね。
でも過去の僕は混乱していました。
postって投稿だよな、、なのになんで急に送られてくる値を受け取る話になってるの、、?
こんな風に悩んだのは僕だけでないと信じています。
PostなのになぜRequestBodyが必要なのか
postで投稿するのになぜ、送られる値を受け取るためのアノテーションを付けるのか。
このように混乱するのは投稿する側も、受け取る側も「同じ」だと無意識に思ってしまっているからです。
大前提としてPOSTするのはユーザーです。
そしてPOSTされたデータを受け取るのはSpringBootアプリケーションです。
結論からいうとPostの際に@RequestBodyを付けるのは受け取る側のための作業です。
@RequestBodyは簡単に例えるなら「取扱説明書」です。
もしあなたが新機能搭載のマシンをもらっても取扱説明書がなければ使いこなすのは難しいですよね。
@RequestBodyはPost(投稿)された内容を受け取る際の取扱方法を指定しているのです。
@RequestBodyを受け取るのはだれ?
@RequestBodyのついた内容を受け取るのはずばりSpringbootAplication本体です。
ちなみに@RequestBodyをつけることでjson形式で受け取ってね!と伝えることができます。
コードを書くあなたは建築家です。
A君が入り口からやってくる時は丁寧に対応するように創る家に仕組みを作るようなものです。
まとめ
postの処理を書く時は「投稿する時」よりも「外部から投稿される時」ということをイメージすると非常にいいと思います。
JSONとは
JSONとはJavaScript Object Notationの略です。
JSONはテキストベースのデータフォーマットとしての役割を果たします。
実はデータは誰でも勝手に使えるというわけではありません
プログラミングにおいてデータというのは扱い方が決まっています
そのように決める理由としては
・誰が書いてもわかるようにするため
・機会が判別できるようにするため
です。
就職活動を行う時、履歴書を書くと思います。
少しの差異はあれども記入しなければならならい欄はどの履歴書でも共通ですよね。
データフォーマットはデータをやりとりする際の履歴書のようなものだと思っておいてください。JSONはデータフォーマットの一種です。
まとめ
JSONはデータをやり取りする時のフォーマット