具有许多参数的 ASP.Net Core Web API 控制器操作

AsV*_*leO 4 c# asp.net-core asp.net-core-webapi

我有List<Car>基于查询参数返回的ASP.Net Core Web API 控制器方法。

[HttpPost("cars")]
public async Task<List<Car>> GetCars([FromBody] CarParams par)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

参数按记录类型分组CarParams。大约有20个参数:

public class CarParams
{
    public string EngineType { get; set; }
    public int WheelsCount { get; set; }
    /// ... 20 params
    public bool IsTruck { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要将此方法从 POST 更改为 GET,因为我想对此类请求使用服务器端缓存。

我应该创建一个带有 20 个参数的控制器方法吗?

[HttpGet("cars")]
public async Task<List<Car>> GetCars(string engineType, 
                                      int wheelsCount, 
                                  /*...20 params?...*/
                                         bool isTruck)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

如果是这种情况:有没有办法为客户端应用程序自动生成如此复杂的 URL?

Nko*_*osi 6

您可以保留模型。更新动作的模型绑定器,以便它知道在哪里查找模型数据。

使用[FromQuery]指定要应用精确的绑定源。

[HttpGet("cars")]
[Produces(typeof(List<Car>))]
public async Task<IActionResult> GetCars([FromQuery] CarParams parameters) {

    //...

    return Ok(data);
}
Run Code Online (Sandbox Code Playgroud)

ASP.NET Core 中的参考模型绑定