具有许多参数的ASP.Net Core Web API Controller操作

时间:2018-06-17 18:58:42

标签: c# asp.net-core asp.net-core-webapi

我有ASP.Net Core Web API Controller的方法,它根据查询参数返回List<Car>

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

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

public class CarParams
{
    public string EngineType { get; set; }
    public int WheelsCount { get; set; }
    /// ... 20 params
    public bool IsTruck { get; set; }
}

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

    //...

    return Ok(data);
}

参考Model Binding in ASP.NET Core

答案 1 :(得分:0)

只需使用VBox

更改label.prefWidthProperty().bind(root.widthProperty()); 属性即可