[Route("api/[controller]")] [Route("[controller]")] [Route("[controller]/[action]")]的区别

在 ASP.NET Core Web API 中,[Route] 属性用于定义控制器或操作的路由模板。以下是三个不同 [Route] 属性的区别:

  1. [Route("api/[controller]")]

    • 这个路由模板将控制器映射到以 api/ 开头的路径,后跟控制器的名称(去掉 Controller 后缀)。

    • 例如,如果控制器名为 ProductsController,那么它的路由将是 api/Products

    • 这种路由通常用于 Web API 项目,以区分 API 路由和其他 MVC 路由。

  2. [Route("[controller]")]

    • 这个路由模板将控制器映射到仅包含控制器名称的路径(去掉 Controller 后缀)。

    • 例如,如果控制器名为 ProductsController,那么它的路由将是 Products

    • 这种路由通常用于 MVC 项目,或者当你不需要 api/ 前缀时。

  3. [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 设计。

posted @ 2025-03-11 20:31  爱晒太阳的懒猫。。  阅读(142)  评论(0)    收藏  举报