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

本文关键字:同类型 参数 何接受 WebAPI 路由 | 更新日期: 2023-09-27 18:32:54

我有一个具有多种方法的Web API。我的路由有问题。我有一种方法是按yearId退货,另一种方法是按product id退货。以下是我想出的 2 条路线:

   /api/records/products?yearId=10
   /api/records/products/15

这是我的 2 种方法:

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

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

应该使用什么路由映射,以便我可以使用以下 2 个路由访问我的 Web API:

    /api/records/products?yearId=10
    /api/records/products/15

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

您可以考虑使用属性路由来自定义您希望如何使用路由。

下面是如何实现所需路由的示例:

[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) {
        ......
    }
}