在 WebAPI 中可以有 2 个具有相同名称和相同参数类型的方法

本文关键字:参数 方法 类型 WebAPI | 更新日期: 2023-09-27 18:33:02

WebApi 中是否有可能有两个名称相同的方法名称,相同的参数类型但不同的参数?

例如,一个是按年份 ID 获取产品

另一个是通过产品ID获取产品

我喜欢这个溃败:

Products?yearId=10
Products/15

我知道我可以有不同的名字,但我的老板喜欢有同样的名字,我想知道这是否可能。

这些是方法:

    [HttpGet]
    [Route("Products/{yearId}")]
    public async Task<IEnumerable<Make>> GetProductsYearId(int yearId)
    {
        ....
    }
    [HttpGet]
    [Route("Products/{makeid}")]
    public async Task<Make> GetProductById(int makeid) 
    {
         .....      
    }

不确定 [路线] 应该是什么样子才能获得此最终结果。

在 WebAPI 中可以有 2 个具有相同名称和相同参数类型的方法

正如Brendan Green所评论的那样,您需要定义两条单独的路由。否则,将无法确定您实际打算调用的方法:

[HttpGet]
[Route("Products/Year/{yearId}")]
public async Task<IEnumerable<Make>> GetProductsYearId(int yearId)
{
    ...
}
[HttpGet]
[Route("Products/Make/{makeid}")]
public async Task<Make> GetProductById(int makeid) 
{
     ... 
}