我在一个N层应用程序上面有一个MVC 4项目。我现在要求能够以编程方式使用应用程序。我在同一个解决方案中创建了一个新的Web Api项目,它位于MVC项目的旁边,再次位于N层应用程序的顶层。
但我不清楚这一切是如何运作的,因为MVC层是启动项目:它设置我的DI,自动播放器等,并且是我部署到服务器的项目。
那么应该如何设置呢?我可以设置我的MVC项目来将所有/ api请求路由到新的Web Api项目吗?或者是否需要单独部署Web Api项目?
我不想做任何非传统的事情,所以如果有更常见的方式来设置它,请指出我正确的方向。
感谢。
答案 0 :(得分:11)
WebApi是Microsoft的另一种面向服务的应用程序,就像WCF一样。但是WCF使用SOAP协议,而WebAPI使用HTTP协议进行通信。
因此,如果您使用WCF为MVC应用程序提供服务,您将单独托管该wcf服务并通过MVC应用程序使用其服务,这与您必须单独托管WebAPI项目并为Web应用程序提供服务的方式完全相同( MVC)。
由于某些原因,如果您希望它们(MVC和WebAPI)在同一个项目中使用,请遵循本文中的此规则。
答案 1 :(得分:8)
昨天我做了同样的事情。我在同一个MVC 4项目中有常规的Controllers和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,后来升级了。
答案 2 :(得分:0)
您只需将路由和API控制器添加到现有的MVC网站,它们将在site/api/