labokgs
@labokgs (Tomoya K)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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 のバックエンドとして利用できる。

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

0Like

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

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

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

0Like

Your answer might help someone💌