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?
您可以保留模型。更新动作的模型绑定器,以便它知道在哪里查找模型数据。
使用[FromQuery]指定要应用精确的绑定源。
[HttpGet("cars")]
[Produces(typeof(List<Car>))]
public async Task<IActionResult> GetCars([FromQuery] CarParams parameters) {
//...
return Ok(data);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6546 次 |
| 最近记录: |