【发布时间】:2013-11-03 10:30:41
【问题描述】:
我一直在试验 MVC WebAPI,非常酷的东西。但我在路线的概念上苦苦挣扎。
作为一个例子,我有一个类似于以下的 webAPI 项目结构:
项目:
- 控制器
- 客户
- CustomerController.cs
- CustomerAddressController.cs
- 产品
- ProductCategoriesController.cs
- 产品控制器
- 客户
目前我在 WebApiConfig.cs 中定义了一个 API 路由
config.Routes.MapHttpRoute(
name: "CustomerApi",
routeTemplate: "api/customer/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
当我只有与客户相关的控制器时,这很好用。 所以我可以打电话:
- GET api/customer/CustomerAddress/?customerID= 1234
但是现在我已经添加了与配置相关的产品相关控制器(当然)以获取我必须调用 Uri 的产品:
- GET api/customer/products/?prodID= 5678 *但我不想要这个 Uri
我想要:
- 获取 api/products/?prodID= 5678
对于产品类别,我想要类似的东西:
- GET api/products/categories/?catID= 1357
我以为我要做的就是添加更多路由,但我找不到如何将各种控制器与我希望它们的路由相关联?
如果我添加了另一个路由,我最终会得到两个不同的 uri 路由到我构建的每个控制器。
如何实现我想要的逻辑分区?
【问题讨论】:
标签: asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing