Проекты MVC и Web Api в рамках одного решения
У меня есть проект MVC 4, сидящий поверх приложения N-уровня. Теперь у меня есть требование, чтобы иметь возможность потреблять прикладную программу. Я создал новый проект Web Api в рамках одного и того же решения, которое находится рядом с проектом MVC, снова поверх приложения N-уровня.
Но я не понимаю, как это все работает как уровень MVC - это проект запуска: он устанавливает мой DI, automapper и т.д., и это проект, который я развертываю на сервере.
Итак, как все это должно быть настроено? Могу ли я настроить проект MVC для маршрутизации всех запросов /api в новый проект Web Api? Или нужно ли развертывать проект Web Api отдельно?
Я не хочу делать что-то необычное, поэтому, если есть гораздо более распространенный способ настройки, просьба указать мне в правильном направлении.
Спасибо.
Ответы
Ответ 1
WebApi - это альтернативное сервис-ориентированное приложение от Microsoft, как и WCF. Но WCF использует протокол SOAP, и WebAPI использует протокол HTTP для связи.
Итак, если вы используете WCF для предоставления услуг для своего приложения MVC, вы будете размещать эту службу wcf отдельно и потреблять ее службу с помощью приложения MVC, ТОЧНО, так же, как вы должны размещать ваш проект WebAPI отдельно и предоставлять услуги вашему веб-приложению ( MVC).
по каким-либо причинам, если вы хотите, чтобы они (MVC и WebAPI) использовались в одном проекте, следуйте этим правилам из этой статьи.
http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx
Ответ 2
Я только что сделал то же самое вчера. У меня есть те же обычные контроллеры MVC 4 и ApiControllers.
Вам нужно добавить маршрутизацию в Global Asax для 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 }
);
}
}
Не забудьте также добавить пакеты Nuget для WebApi (если у вас их уже нет). В моем случае у меня их не было, потому что мой проект был изначально MVC 3 и позже был обновлен.
Ответ 3
Вам просто нужно добавить контроллеры маршрутизации и API на существующий сайт MVC, где все они будут доступны в site/api/