1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVCにおけるApiControllerとControllerの相違点

2022-03-26 11:55:54

質問

ASP.NET MVC 4ベータ版で遊んでいるのですが、現在2種類のコントローラがあるようです。 ApiControllerController .

どのような場合に特定のコントローラを選択することができるのか、少し混乱しています。

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

今、私たちは両方のコントローラを使用することができるので、誰か、対応するコントローラのために行くためにどのような状況を指摘することができます。

どのように解決するのですか?

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

リンクはこちら

引用元

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

ApiControllerは、データを返すことに特化しています。例えば、クライアントから要求されたフォーマットにデータを透過的にシリアライズすることを引き受けます。また、デフォルトで異なるルーティングスキーム(URLからアクションへのマッピングなど)に従い、慣習的にREST-full APIを提供する。

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

HTMLベースのWeb/インターネット/イントラネットアプリケーションを書くのであれば、MVC/Controllerを使い続けることです。もし、システムに対してデータ駆動型/RESTフルインターフェイスを提供したいのであれば、WebAPIを使いましょう。もちろん、両方を組み合わせることも可能で、ApiControllerがMVCページからAJAXコールを処理することもできます。

実例を挙げますと 私は現在、REST-full APIをエンティティに提供するERPシステムで仕事をしています。このAPIでは、WebAPIが良い候補になるでしょう。同時に、ERPシステムは、REST-ful API用のクエリを作成するために使用できる高度にAJAX化されたWebアプリケーションを提供します。Webアプリケーション自体はMVCアプリケーションとして実装することができ、メタデータなどを取得するためにWebAPIを利用することができます。