N層アプリケーションの上にMVC 4プロジェクトがあります。アプリケーションをプログラムで使用できるようにする必要があります。同じソリューション内で、MVCプロジェクトと並んでN層アプリケーションの上にある新しいWeb Apiプロジェクトを作成しました。
しかし、MVCレイヤーはスタートアッププロジェクトであり、DI、オートマッパーなどをセットアップし、サーバーにデプロイするプロジェクトであるため、これがどのように機能するかについては不明です。
では、これをどのように設定する必要がありますか?すべての/ apiリクエストを新しいWeb ApiプロジェクトにルーティングするようにMVCプロジェクトをセットアップできますか?または、Web Apiプロジェクトを個別に展開する必要がありますか?
慣例にとらわれない何かをしたくないので、これを設定するより一般的な方法があれば、胸が正しい方向に私を向けます。
ありがとう。
WebApiは、WCFと同様にMicrosoftが提供する代替のサービス指向アプリケーションです。ただし、WCFはSOAPプロトコルを使用し、WebAPIは通信にHTTPプロトコルを使用します。
そのため、MVCアプリケーションにサービスを提供するためにWCFを使用している場合、そのwcfサービスを個別にホストし、MVCアプリケーションによってそのサービスを消費します。WebAPIプロジェクトを個別にホストし、Webアプリケーション(MVC)にサービスを提供する方法とまったく同じです。
何らかの理由で、それら(MVCとWebAPI)を同じプロジェクトで使用する場合は、この記事のこのルールに従ってください。
昨日も同じことをしました。同じMVC 4プロジェクトには、通常のコントローラーとApiControllersがあります。
Global Asax for WebApiにルーティングを追加する必要があります。
WebApiConfig.Register(GlobalConfiguration.Configuration);
WebApiConfigを見てください:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
WebApiのNugetパッケージを追加することも忘れないでください(まだお持ちでない場合)。私の場合、私のプロジェクトは元々MVC 3であり、後でアップグレードされたため、それらはありませんでした。
ルーティングおよびAPIコントローラーを既存のMVCサイトに追加するだけで、site/api/