Действие ASP.Net Core Web API Controller со многими параметрами
У меня есть метод 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 ответа
Решение
Вы можете сохранить модель. Обновите связыватель модели действия, чтобы он знал, где искать данные модели.
использование [FromQuery]
указать точный источник привязки, который вы хотите применить.
[HttpGet("cars")]
[Produces(typeof(List<Car>))]
public async Task<IActionResult> GetCars([FromQuery] CarParams parameters) {
//...
return Ok(data);
}
Связывание эталонной модели в ASP.NET Core