ASP.NET Web Api 控制器子文件夹路由

作者:编程家 分类: 编程代码 时间:2025-07-29

使用ASP.NET Web API开发RESTful API是一种常见的方式,它可以帮助我们构建灵活和可扩展的Web服务。在开发过程中,我们经常需要将API控制器组织到不同的子文件夹中,以提高代码的可读性和可维护性。本文将介绍如何在ASP.NET Web API中使用控制器子文件夹路由,并通过一个案例来说明。

案例背景

假设我们正在开发一个在线商城的API,其中有两个子模块:用户管理和商品管理。为了更好地组织代码,我们希望将与用户相关的API控制器放在一个名为"User"的子文件夹中,将与商品相关的API控制器放在一个名为"Product"的子文件夹中。

控制器子文件夹路由的配置

要实现控制器子文件夹路由,我们需要在WebApiConfig.cs文件中进行一些配置。打开该文件,并在Register方法中添加以下代码:

csharp

config.Routes.MapHttpRoute(

name: "DefaultApi",

routeTemplate: "api/{controller}/{id}",

defaults: new { id = RouteParameter.Optional }

);

config.Routes.MapHttpRoute(

name: "ControllerFolderApi",

routeTemplate: "api/{folder}/{controller}/{id}",

defaults: new { id = RouteParameter.Optional }

);

上述代码中,第一个路由配置是默认的路由配置,用于处理不在子文件夹中的控制器。第二个路由配置是用于处理子文件夹中的控制器,其中"folder"参数用于指定子文件夹的名称。

控制器子文件夹的使用

现在我们可以创建子文件夹和相应的控制器了。在项目中创建名为"Controllers"的文件夹,并在该文件夹中创建名为"User"和"Product"的子文件夹。在"User"子文件夹中创建名为"UserController.cs"的控制器,在"Product"子文件夹中创建名为"ProductController.cs"的控制器。

csharp

// UserController.cs

namespace WebApi.Controllers.User

{

public class UserController : ApiController

{

// GET api/user

public IEnumerable Get()

{

return new string[] { "User 1", "User 2" };

}

}

}

// ProductController.cs

namespace WebApi.Controllers.Product

{

public class ProductController : ApiController

{

// GET api/product

public IEnumerable Get()

{

return new string[] { "Product 1", "Product 2" };

}

}

}

使用控制器子文件夹路由

现在我们可以使用控制器子文件夹路由来访问API了。启动应用程序,并尝试访问以下URL:

- 获取所有用户:/api/user

- 获取所有商品:/api/product

你会发现,控制器子文件夹路由已经生效了,并且能够正确地返回相应的数据。

通过使用ASP.NET Web API的控制器子文件夹路由,我们可以更好地组织我们的API控制器,并提高代码的可读性和可维护性。本文介绍了如何配置控制器子文件夹路由,并通过一个案例进行了演示。希望这篇文章能够帮助你在ASP.NET Web API开发中更好地使用控制器子文件夹路由。