labokgs
@labokgs (Tomoya K)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

SpringBootのcontrollerとRestControllerの違いが分からない

解決したいこと

JavaのSpring Bootに関する質問。

アプリケーション層におけるアノテーションの違いに関して、ControllerとRestControllerの違いは以下のイメージで正しいのでしょうか。

  • Controller

→HTMLなどのビューを返す

  • RestController

→json形式でデータを返す

自分の学習したDjangoに置き換えると、、

Controllerの場合、Djangoフレームワークと同じようなプログラム構成

下がDjango REST Frameworkのように、フロントとバックエンドか分かれていて、フロントから受け取ったリクエストに対してjson形式のデータを返す「REST API」を作るためのアノテーション。

お願い

駆け出しエンジニアのため用語などの理解もかなり浅いです。
上記の認識が正しいのかに加えて用語の間違いなどもありましたら、重ねてご指摘いただきたいです。

0

3Answer

「spring boot restcontroller controller 違い」などをキーワードにググるといろいろ参考になりそうな記事がヒットしますが、やってみましたか? 例えば下記:

Springにおける「RestController」と「Controller」の違いとは
https://atmarkit.itmedia.co.jp/ait/articles/2409/20/news083.html

概略 (必ずしもそれだけとは限りませんが)、

Controller: 普通のいわゆる MVC の C に該当。ブラウザから要求すると MVC が html をレンダリングして応答として返すという使い方が多いはず。

RestController: RESTful な Web API。React などの SPA のバックエンドとして利用できる。

・・・という感じだと思います。

1Like

Comments

  1. @labokgs

    Questioner

    ご回答いただきありがとうございます。

    自分の知っている知識(Django)をもとに理解に落とし込もうとしたのですが、かならずしも一致するというわけではないんですね。。勉強になりました

    ご丁寧に解説して頂きありがとうございます!
    紹介して頂いたサイトも参考にさせていただきます。

によると、@RestController@ResponseBodyを全てのメソッドに付加してくれるというのが主な違いだそうです(意訳)。そういう意味で、質問者さんの解釈は概ね合っていると思います。ただ、RESTはXMLも返せるので、JSONだけではないかもしれません。またどちらもMVCのC相当のクラスに付けるアノテーションになります。

Djangoとの対比の件については、DjangoはMVCモデルではない(DjangoにはMVCのCがない)

のであまり対比が適切ではないように思います。djangoでRESTを扱う場合、Django REST Frameworkをよく見るので、機能的な比較をしたい場合はそういう括りでいいとは思いますが…。何を確認したいのか分かりませんが、Djangoを出すのが適切かどうかは文脈によるように思います。

1Like

Comments

  1. @labokgs

    Questioner

    ご回答いただきありがとうございます。

    Djangoしか学んでいなかったため、MVCとMTVの違いもまだよくわかっていませんでした。
    もう少し自分で調べて理解を進めていきます!

    ご丁寧に解説して頂きありがとうございました。

Comments

  1. @labokgs

    Questioner

    参考サイトまで教えて頂きありがとうございます!

    勉強させていただきます。

Your answer might help someone💌