Asp.net mvc 4 WebAPI如何指定到达控制器的路径
我一直在试验MVC WebAPI,非常酷的东西。但我正在为路线的概念而挣扎 例如,我有一个webAPI项目结构,如下所示: 项目:Asp.net mvc 4 WebAPI如何指定到达控制器的路径,asp.net-mvc-4,asp.net-web-api,asp.net-web-api-routing,Asp.net Mvc 4,Asp.net Web Api,Asp.net Web Api Routing,我一直在试验MVC WebAPI,非常酷的东西。但我正在为路线的概念而挣扎 例如,我有一个webAPI项目结构,如下所示: 项目: 控制器 顾客 CustomerController.cs CustomerAddressController.cs 产品 ProductCategoriesController.cs 产品控制器 目前,我在WebApiConfig.cs中定义了一个API路由 config.Routes.MapHttpRoute(
- 控制器
- 顾客
- CustomerController.cs
- CustomerAddressController.cs
- 产品
- ProductCategoriesController.cs
- 产品控制器
- 顾客
config.Routes.MapHttpRoute(
name: "CustomerApi",
routeTemplate: "api/customer/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
当我只有与客户相关的控制器时,这种方法工作得很好。
所以我可以打电话:
- 获取api/customer/CustomerAddress/?customerID=1234
- 获取api/customer/products/?prodID=5678*但我不想要此Uri
- 获取api/products/?prodID=5678
- 获取api/产品/类别/?catID=1357
如何实现所需的逻辑分区?使用Web Api 2,您可以顺利地为您的操作定义特定的路由。例如:
public class CustomerController : ApiController
{
[Route("api/customer")]
public IEnumerable<Customer> GetCustomers()
{
// ..
}
[Route("api/customer/{customerID}")]
public Customer GetCustomer(int customerID)
{
// ..
}
[Route("api/customer/CustomerAddresses/{customerID}")]
public Address GetCustomerAddresses(int customerID)
{
// ...
}
}
public class ProductController : ApiController
{
[Route("api/product")]
public IEnumerable<Product> GetProducts()
{
// ..
}
[Route("api/product/{prodID}")]
public Product GetProduct(int prodID)
{
// ..
}
[Route("api/product/categories/{catID}")]
public Category GetCategory(int catID)
{
// ...
}
}
公共类CustomerController:ApicController
{
[路线(“api/客户”)]
公共IEnumerable GetCustomers()
{
// ..
}
[路由(“api/customer/{customerID}”)]
公共客户GetCustomer(int customerID)
{
// ..
}
[路由(“api/customer/CustomerAddresses/{customerID}”)]
公共地址GetCustomerAddresses(int customerID)
{
// ...
}
}
公共类ProductController:ApicController
{
[路线(“原料药/产品”)]
公共IEnumerable GetProducts()
{
// ..
}
[路由(“api/product/{prodID}”)]
公共产品GetProduct(int prodID)
{
// ..
}
[路线(“api/product/categories/{catID}”)]
公共类别GetCategory(int catID)
{
// ...
}
}
Perfect:我一直在读WebAPI删除了方法装饰,如果这是真的,我很高兴看到它回来了。谢谢你的回答。