如何在一个项目中混合Web API和ASP.Net MVC页面?
例如,我有模型用户.我希望,在同一个项目中,有一个ApiController,它将响应所有用于管理User实体的HTTP动词,同时拥有一个Controller,它将根据请求的Action返回相应的强类型视图.
我无法命名两个控制器UserController.围绕这个最好的方法是什么?我应该命名一个UserApiController和另一个UserController吗?还有其他建议吗?
Mik*_*son 49
您可以将它们放在单独的命名空间中,例如MyApp.Controllers.UsersController和MyApp.Controllers.WebAPI.UsersController.
这将允许您在MVC和WebAPI中公开类似的URI路由,例如:
/users/1 << MVC view
/api/users/1 << Web API
Run Code Online (Sandbox Code Playgroud)
Ale*_*lex 13
我没有更改命名空间,我唯一要做的就是首先注册WebApi,然后注册MVC路由
//First register WebApi router
GlobalConfiguration.Configure(WebApiConfig.Register);
//and register Default MVC Route after
RouteConfig.RegisterRoutes(RouteTable.Routes);
Run Code Online (Sandbox Code Playgroud)
一切都很棒!
应将WebApi实现添加为MVC应用程序中的单独区域.这很自然.这样做可以为您提供Mike Wasson推荐的独立命名空间,此外它还为您提供了设置/ api路由的自然方式.你得到一个单独的模型文件夹
此外,它与项目的其余部分非常具体地分开.如果未来的需求永远需要将api实现分离到一个单独的项目中,那么将api实现隔离到一个单独的区域会使得分解更容易.