「DefaultApi」ルーティングに「MapHttpRoute」を使用しながら、「Default」ルーティングに「MapRoute」を使用する理由
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
ASP.NET上でWeb APIを使用する場合、最終的には両方とも同じ基になるASP.NETルートテーブルで動作しますが、正しく指摘されているように、ユーザーの観点から2つの異なるメソッドを呼び出してルートを登録します。
ASP.NETの外部でホストするときにWeb APIがSystem.Webに依存する必要がないように、ルーティングはこのように設計されました。
Web APIは、MVC、Webフォーム、またはASP.NETの最上位に位置していないことに注意してください。 Webコンテキスト(ASP.NET)内でホストできますが、自己ホスト(コンソール、WPFなど)することもできますし、メモリ内でホストすることもできます(ポートを使用せず、軽量のエンドツーエンドテストに便利です)。
MapRoute
は「通常の」ASP.NET MVCコントローラー用で、MapHttpRoute
はWeb APIコントローラー用です。