50

如何在一个项目中混合使用 Web API 和 ASP.Net MVC 页面?

例如,我有模型用户。我希望在同一个项目中拥有一个 ApiController 来响应用于管理用户实体的所有 HTTP 动词,同时拥有一个控制器来根据请求的操作返回适当的强类型视图。

我不能命名两个控制器 UserController。解决这个问题的最佳方法是什么?我应该命名一个 UserApiController 和另一个 UserController 吗?还有其他建议吗?

4

3 回答 3

51

您可以将它们放在单独的名称空间中,例如 MyApp.Controllers.UsersController 和 MyApp.Controllers.WebAPI.UsersController。

这将让您在 MVC 和 WebAPI 中公开类似的 URI 路由,例如:

/users/1      << MVC view
/api/users/1  << Web API
于 2012-05-21T00:35:43.297 回答
16

我没有更改命名空间,我唯一要做的就是先注册 WebApi,然后再注册 MVC 路由

//First register WebApi router
GlobalConfiguration.Configure(WebApiConfig.Register);
//and register Default MVC Route after
RouteConfig.RegisterRoutes(RouteTable.Routes);

一切都很好!

于 2016-02-19T17:17:47.900 回答
10

WebApi 实现应作为单独的区域添加到 MVC 应用程序中。这是一个自然的契合。这样做会为您提供 Mike Wasson 推荐的单独命名空间,此外,它还为您提供了一种设置 /api 路由的自然方式。你得到一个单独的模型文件夹

此外,它与项目的其余部分非常明确地分开。如果将来的要求是您需要将 api 实现分离到一个单独的项目中,那么将 api 实现隔离到一个单独的区域会使分解它变得容易得多。

于 2013-07-09T16:02:25.107 回答