加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – WebAPI如何指定控制器将到达哪个路由

发布时间:2020-12-16 09:25:27 所属栏目:asp.Net 来源:网络整理
导读:我一直在尝试使用MVC WebAPI,非常酷的东西.但我正在努力解决路线问题. 作为一个例子,我有一个webAPI项目结构,如下所示: 项目: 控制器 客户 CustomerController.cs CustomerAddressController.cs 产品 ProductCategoriesController.cs 产品控制器 目前我在W
我一直在尝试使用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

相反,我想:

> GET api / products /?prodID = 5678

对于产品类别,我想要类似于:

> GET api / products / categories /?catID = 1357

我认为我必须做的就是添加更多路线,但是我无法找到如何将各种控制器与我希望的路线联系起来?

如果我确实添加了另一条路线,我最终会将两条不同的uri路由到我建立的每个控制器.

如何实现我想要的逻辑分区?

解决方法

使用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)
    {
        // ...
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读