ASP.NET MVCおよびWeb APIが初めてで、基本を取得しようとしています。 VS 2013には、MVC
、Web API
、Both of them together
という名前のプロジェクトテンプレートがあります。
チュートリアルを完了し、MVCだけでなくWeb APIテンプレートを使用してAPIを作成できることを学びました。
Architectureとsageに基づいたこれらの違いは何ですか?
基本的に、Web API
コントローラーはMVC
コントローラーであり、HttpMessageResponse
の代わりにActionResponse
を応答の基本タイプとして使用します。他のほとんどの点で同じです。プロジェクトタイプの主な違いは、MVC Application
プロジェクトタイプは、デフォルトのCSS
、JavaScript
ファイル、APIには不要なWebサイトに必要なその他のリソースなど、Web固有のものを追加することです。
MVCはWebサイトの作成に使用されます。この場合、Controllers
は通常、ブラウザーのリクエストに対してView
(つまり、HTML応答)を返します。一方、Web APIは通常、他のアプリケーションによって消費されるように作られています。他のアプリケーションがデータ/機能にアクセスできるようにしたい場合は、このアクセスを容易にするWeb APIを作成できます。たとえば、Facebookには、アプリ開発者がアプリを使用しているユーザーに関する情報にアクセスできるようにするためのAPIがあります。 Web APIは、一般消費用である必要はありません。 APIを作成して、独自のアプリケーションをサポートすることもできます。たとえば、MVC WebサイトのAJAX機能をサポートするWeb APIを作成しました。
マイクロソフトは、さまざまなテンプレートの表示方法を変更しました。現在、プロジェクトタイプごとに異なるテンプレートを使用する代わりに、開発者は必要に応じて同じプロジェクト内でASP.NETテクノロジーを混在させることを推奨しています。 MicrosoftはこれをvNext
と呼びます。
UPDATE:ASP.NET Coreの場合、Web APIはMVC 6プロジェクトタイプに統合され、ApiController
クラスはController
クラスに統合されています。詳細については、 https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6
私の2セント...
Controller
は、View
を決定します。つまり、コントローラーは、ユーザーが「見る」べきものを決定します(現在のシナリオまたはコンテキスト)、リクエストを行うとき。ASPX
ページは、ユーザーがリクエストを行うときに「見る」べき内容を決定します。Web APIは、Webサイトのみに結び付けられたテクノロジーではありません。 Webサイトだけでなく、複数の目的に使用できます。したがって、rendering
の意味がわかりません
さらに読む
コントローラークラスから派生したMVCコントローラー。 Mvcでは、ビューを返すことができます。 Mvc achitectureは、アプリケーションの作成に使用します。ただし、Web APIはさまざまなアプリケーションにデータを提供するために使用されます。
Web ApiはApiコントローラーから駆動し、ビューを返しません。
注:MVCコントローラーからWeb Apiを作成することもできますが、JsonResultまたはその他のWeb APIがサポートする戻り値の型として結果を返す必要があります。
ここで既に提供されている回答に加えて、ApiControllerを継承し、Http動詞POSTを持つアクションを持つコントローラーには、[FromBody]入力パラメーターを1つしか指定できません。 MVCコントローラー(「コントローラー」から派生)を使用する場合、多くの入力後パラメーターを使用できます。