2 WebAPI路由如何接受相同的类型参数

时间:2016-02-03 00:13:55

标签: c# asp.net-web-api asp.net-web-api-routing

我有一个网络Api有几种方法。我有路由问题。我有一种方法是按yearId返回产品,另一种方法是按product id返回产品。以下是我提出的两条路线:

   /api/records/products?yearId=10

   /api/records/products/15

这是我的两种方法:

    [HttpGet]
    [Route("getbyyearid")]
    public async Task<Product> GetByYearid(int yearId)
    {
          .....     
    }


    [HttpGet]
    [Route("getbyid")]
    public async Task<IEnumerable<Product>> GetByid(int productId)
    {
        ......
    }

我应该拥有什么路由映射,以便我可以使用以下两条路径访问我的Web API:

    /api/records/products?yearId=10

    /api/records/products/15

1 个答案:

答案 0 :(得分:0)

您可以考虑使用Attribute Routing来自定义您希望如何使用路线。

以下是如何实现所需路线的示例:

[RoutePrefix("api/records")]
public class RecordsController: ApiController {
    // GET api/records/products?yearid=10    
    [HttpGet]
    [Route("products")]
    public async Task<Product> GetByYearid(int yearId) {
          .....     
    }

    // GET api/records/products/15
    [HttpGet]
    [Route("products/{productId:int}")]
    public async Task<IEnumerable<Product>> GetByid(int productId) {
        ......
    }
}