По сути, Web API
контроллер - это MVC
контроллер, который использует HttpMessageResponse
в качестве базового типа своего ответа вместо ActionResponse
. Они одинаковы во многих других отношениях. Основное различие между типами проектов заключается в том, что к MVC Application
типу проекта добавляются специфические для веб-сайта вещи, такие как default CSS
, JavaScript
файлы и другие ресурсы, необходимые для веб-сайта, которые не нужны для API.
MVC используется для создания веб-сайтов. В этом случае Controllers
обычно возвращают View
(т.е. ответ HTML) на запросы браузера. С другой стороны, веб-API обычно предназначены для использования другими приложениями. Если вы хотите разрешить другим приложениям получать доступ к вашим данным / функциям, вы можете создать веб-API для облегчения этого доступа. Например, Facebook имеет API для того, чтобы позволить разработчикам приложений получать доступ к информации о пользователях, использующих приложение. Веб-API не должны быть для общего пользования. Вы также можете создать API для поддержки ваших собственных приложений. Например, мы создали веб-API для поддержки функциональности AJAX нашего веб-сайта MVC.
Microsoft изменила способ представления разных шаблонов. Теперь вместо использования разных шаблонов для разных типов проектов они рекомендуют разработчикам смешивать технологии ASP.NET внутри одного проекта по мере необходимости. Microsoft называет это vNext
.
ОБНОВЛЕНИЕ: Для ASP.NET Core, веб-API был интегрирован в тип проекта MVC 6, и ApiController
класс объединен в Controller
класс. Более подробная информация по адресу: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6