У меня есть вопрос. У меня есть два метода в контроллере:
[HttpGet]
public IActionResult GetCompetitors()
{
var competitors = _competitorRepository.GetAll().ToList();
return Ok(_mapper.Map<List<CompetitorDTO>>(competitors));
}
и у меня есть второй метод:
[HttpGet]
public IActionResult GetFestivalByPrice([FromQuery] int godina)
{
if (godina <= 1800 || godina > 2020)
{
return BadRequest("godina must between 1800 and 2020");
}
var competitors = _competitorRepository.GetAllByBirth(godina);
if (competitors == null)
{
return NotFound();
}
return Ok(_mapper.Map<List<CompetitorDTO>>(competitors));
}
Первый должен иметь маршрут api/controllername, а второй — api/controllername?godina = {somevalue}. Я получаю сообщение об ошибке с этим кодом, два метода с одним и тем же путем. Маршруты должны быть одинаковыми, только один с параметром, а другой без.
Как указано в ошибке, у вас не может быть двух методов с одним и тем же путем.
Вы можете решить эту проблему, добавив необязательный параметр в свой первый метод и объединив их логику.
[HttpGet]
public IActionResult GetCompetitors([FromQuery] int? godina)
Я бы использовал что-то вроде этого
[NonAction]
public IActionResult GetCompetitors()
{
var competitors = _competitorRepository.GetAll().ToList();
return Ok(_mapper.Map<List<CompetitorDTO>>(competitors));
}
[HttpGet]
public IActionResult GetFestivalByPrice([FromQuery] int? godina)
{
if (godina==null) return GetCompetitors();
... your code
}