MVC5/WEB API 2 将 Home ApiController 路由到 /api/home 而不是 /home api
MVC5 / WEBAPI 2 routing HomeApiController to /api/home rather than /homeapi
我有一个现有的 webapi 2 应用程序需要添加基本的前端。现有的 webapi 控制器已经在名为 xController yController 的 Controllers 目录根目录中创建。
Controllers
-XController.cs
-YController.cs
路线如下
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
这些控制器中的每一个都需要一个伴随的 MVC 控制器。我想做的是将 API 控制器重命名为 XApiController YApiController 并使用路由来确保服务的现有用法中断。然后我可以为前端添加标准 MVC 控制器。
Controllers
-XApiController (previously XContoller)
-XController
-YApiController (previously YController)
-YController
你不能只使用 RoutePrefix
属性来做这个吗?然后你可以随心所欲地调用你的控制器,只需让属性决定它应该托管在哪里,在控制器级别控制你的路由有利有弊,但这似乎是一个常见的用例,例如:
[RoutePrefix("api/home")]
public class SomeHomeController: ApiController
{
// ...
}
控制器在每个框架中都是独立的类型,每个框架都可以发现它们,无论它们位于何处(只要它们有正确的名称)。没有理由为了得到你想要的结果而弄乱路由。您唯一需要的(假设它是可以接受的)是将您的控制器放入不同的 namespace/folder,这样您就可以拥有 2 个具有相同名称的控制器(MVC 和 Web API)。
ApiControllers
-XController
-YController
Controllers
-XController
-YController
如果你问我,最好还是将 MVC 和 API 控制器放在一个单独的位置,即使你不能将它们部署为单独的应用程序。
我有一个现有的 webapi 2 应用程序需要添加基本的前端。现有的 webapi 控制器已经在名为 xController yController 的 Controllers 目录根目录中创建。
Controllers
-XController.cs
-YController.cs
路线如下
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}"
);
这些控制器中的每一个都需要一个伴随的 MVC 控制器。我想做的是将 API 控制器重命名为 XApiController YApiController 并使用路由来确保服务的现有用法中断。然后我可以为前端添加标准 MVC 控制器。
Controllers
-XApiController (previously XContoller)
-XController
-YApiController (previously YController)
-YController
你不能只使用 RoutePrefix
属性来做这个吗?然后你可以随心所欲地调用你的控制器,只需让属性决定它应该托管在哪里,在控制器级别控制你的路由有利有弊,但这似乎是一个常见的用例,例如:
[RoutePrefix("api/home")]
public class SomeHomeController: ApiController
{
// ...
}
控制器在每个框架中都是独立的类型,每个框架都可以发现它们,无论它们位于何处(只要它们有正确的名称)。没有理由为了得到你想要的结果而弄乱路由。您唯一需要的(假设它是可以接受的)是将您的控制器放入不同的 namespace/folder,这样您就可以拥有 2 个具有相同名称的控制器(MVC 和 Web API)。
ApiControllers
-XController
-YController
Controllers
-XController
-YController
如果你问我,最好还是将 MVC 和 API 控制器放在一个单独的位置,即使你不能将它们部署为单独的应用程序。