Почему выдаётся ошибка 404, когда должна выдаваться 400?

Рейтинг: 0Ответов: 2Опубликовано: 12.02.2023

Есть такой код:

    [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, но это не помогло.

Ответы

▲ 0

int - это value type. Он не может принимать значение null нужно его привести к ссылочному

▲ 0

посмотрел на код... и на вскидку .. попробуйте проверять 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.

надеюсь не много помог)