ASP.NET MVC における ApiController と Controller の違い 質問する

ASP.NET MVC における ApiController と Controller の違い 質問する

ASP.NET MVC 4 ベータ版を試してみたところ、現在 と の 2 種類のコントローラーがあることがわかりましたApiControllerController

どのような状況で特定のコントローラーを選択できるのか少し混乱しています。

たとえば、ビューを返す場合は、 またはApiController通常の を使用する必要がありますかController? WCF Web API が MVC と統合されたことは承知しています。

今は両方のコントローラーが使用できるので、どの状況で対応するコントローラーを使用すればよいのか教えていただけますか。

ベストアンサー1

通常のビューをレンダリングするには、コントローラーを使用します。ApiController アクションは、シリアル化されてクライアントに送信されるデータのみを返します。

リンクはこちら

引用:

注: ASP.NET MVC を使用したことがある場合は、コントローラーについては既によくご存知でしょう。コントローラーは Web API でも同様に動作しますが、Web API のコントローラーは、Controller クラスではなく ApiController クラスから派生します。最初に気付く大きな違いは、Web API コントローラーのアクションはビューを返すのではなく、データを返すことです。

ApiController はデータを返すことに特化しています。たとえば、クライアントが要求した形式にデータを透過的にシリアル化します。また、デフォルトでは異なるルーティング スキーム (URL をアクションにマッピングするなど) に従い、慣例的に RESTful API を提供します。

多少の手動コーディングで、ApiController の代わりに Controller を使用すれば、おそらく何でもできるでしょう。結局のところ、どちらのコントローラーも ASP.NET 基盤の上に構築されています。しかし、RESTful API を持つことは今日では一般的な要件であるため、WebAPI はそのような API の実装を簡素化するために作成されました。

2 つのどちらを選ぶかは簡単です。HTML ベースの Web/インターネット/イントラネット アプリケーションを作成する場合 (場合によっては、AJAX 呼び出しで json を返す)、MVC/コントローラーを使用します。システムにデータ駆動型/REST フル インターフェイスを提供する場合は、WebAPI を使用します。もちろん、両方を組み合わせて、MVC ページからの AJAX 呼び出しを ApiController で処理することもできます。

実際の例を挙げると、私は現在、エンティティに REST フル API を提供する ERP システムに取り組んでいます。この API には、WebAPI が適しています。同時に、ERP システムは、REST フル API のクエリを作成するために使用できる、高度に AJAX 化された Web アプリケーションを提供します。Web アプリケーション自体は、WebAPI を使用してメタデータなどを取得することで、MVC アプリケーションとして実装できます。

おすすめ記事