Почему выдаётся ошибка 404, когда должна выдаваться 400?
Есть такой код:
[HttpGet("{id}")]
public async Task<IActionResult> GetID(int? id)
{
if (id == null || id <= 0)
{
return BadRequest();
}
var User = await _context.Users.FindAsync(id);
if (User == null)
{
return NotFound();
}
return Ok(User);
}
По условию если id не поступает и остается пустым, должна быть 400 ошибка, а на деле выдает 404, как мне это исправить? Я пробовал вместо int использовать string, но это не помогло.
Ответы (2 шт):
Автор решения: user20769056
→ Ссылка
int - это value type. Он не может принимать значение null нужно его привести к ссылочному
Автор решения: microup
→ Ссылка
посмотрел на код... и на вскидку .. попробуйте проверять id перед его использованием в методе FindAsync.
Например, так:
[HttpGet("{id}")]
public async Task<IActionResult> GetID(int? id)
{
if (!id.HasValue || id <= 0)
{
return BadRequest();
}
var User = await _context.Users.FindAsync(id.Value);
if (User == null)
{
return NotFound();
}
return Ok(User);
}
по идее теперь, если id пустой или не указан, будет выдаваться код ошибки 400 Bad Request.
надеюсь не много помог)