[Route("api/[controller]")] [Route("[controller]")] [Route("[controller]/[action]")]的区别
在 ASP.NET Core Web API 中,[Route] 属性用于定义控制器或操作的路由模板。以下是三个不同 [Route] 属性的区别:
-
[Route("api/[controller]")]
-
这个路由模板将控制器映射到以
api/开头的路径,后跟控制器的名称(去掉Controller后缀)。 -
例如,如果控制器名为
ProductsController,那么它的路由将是api/Products。 -
这种路由通常用于 Web API 项目,以区分 API 路由和其他 MVC 路由。
-
-
[Route("[controller]")]
-
这个路由模板将控制器映射到仅包含控制器名称的路径(去掉
Controller后缀)。 -
例如,如果控制器名为
ProductsController,那么它的路由将是Products。 -
这种路由通常用于 MVC 项目,或者当你不需要
api/前缀时。
-
-
[Route("[controller]/[action]")]
-
这个路由模板将控制器和操作映射到路径,路径由控制器名称和操作名称组成(去掉
Controller后缀)。 -
例如,如果控制器名为
ProductsController,操作名为GetAll,那么它的路由将是Products/GetAll。 -
这种路由通常用于 MVC 项目,或者当你希望 URL 中包含操作名称时。
-
总结
-
[Route("api/[controller]")]: 适用于 Web API,路由以
api/开头。 -
[Route("[controller]")]: 适用于 MVC 或不需要
api/前缀的 Web API。 -
[Route("[controller]/[action]")]: 适用于 MVC 或需要在 URL 中包含操作名称的 Web API。
选择哪种路由模板取决于你的项目需求和 URL 设计。

浙公网安备 33010602011771号