Stack Exchange
При запросе на API через Postman, в параметр метода приходит 0, вместо переданного значения
Вот сам метод контроллера:
    [HttpPost("verify")]
    public async Task<IActionResult> VerifyAccount(int verifyCode)
    {
        string? Email = HttpContext.Session.GetString("Email");
        string? Password = HttpContext.Session.GetString("Password");
        string? Username = HttpContext.Session.GetString("Username");
        string? Role = HttpContext.Session.GetString("Role");

        if (Email is null || Password is null || Username is null || Role is null)
            return StatusCode(422, new { message = AccountErrorMessage.NullUserData });

        string? code = HttpContext.Session.GetString(Email);
        if (string.IsNullOrWhiteSpace(code))
            return StatusCode(422, new { message = AccountErrorMessage.VerifyCodeNull });

        try
        {
            int correctCode = int.Parse(code);

            if (!_validation.IsSixDigit(correctCode))
                return StatusCode(500, new { message = AccountErrorMessage.Error });

            if (!verifyCode.Equals(correctCode))
                return StatusCode(422, new { message = AccountErrorMessage.CodeIncorrect });

            var userModel = new UserModel { email = Email, password_hash = Password, username = Username, role = Role };
            await _userCreate.Create(userModel);

            HttpContext.Session.Remove(Email);
            HttpContext.Session.Remove("Email");
            HttpContext.Session.Remove("Password");
            HttpContext.Session.Remove("Username");
            HttpContext.Session.Remove("Role");

            return StatusCode(201);
        }
        catch (FormatException)
        {
            return StatusCode(422, new { message = AccountErrorMessage.InvalidFormatCode });
        }
        catch (Exception ex)
        {
            _logger.LogCritical(ex.ToString());

            HttpContext.Session.Remove(Email);
            HttpContext.Session.Remove("Email");
            HttpContext.Session.Remove("Password");
            HttpContext.Session.Remove("Username");

            return StatusCode(500, new { message = AccountErrorMessage.Error });
        }
    }

Тело запроса в Postman:
{
    "verifyCode": 939797
}

Content-Type установлен в application/json
Лог из Postman:
Request Headers
Content-Type: application/json
User-Agent: PostmanRuntime/7.35.0
Accept: */*
Postman-Token: db2b48d2-7255-4903-8f51-613fefb25620
Host: localhost:7067
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Length: 30
Cookie:     .AspNetCore.Session=CfDJ8Nz4yTn59WtDmbz2eck3COTQuMXqlfMmLer3kUCRJ5g1vIf9%2FakwV%2BtJW9Q7pxgT    hnSOcks6UBusaZl9MqLQz4%2F1OZV4ZRihohKioellu9gdzn6YCn9asaDLOD%2B%2F%2Fh3Doodsmsb0qe5R0vdTtPLq    AuTYTxC0bhPppxlC6jxU%2Fo%2Fa
Request Body
{
    "verifyCode": 939797
}
Response Headers
Content-Type: application/json; charset=utf-8
Date: Fri, 24 Nov 2023 23:08:55 GMT
Server: Kestrel
Transfer-Encoding: chunked
Response Body
{"message":"Code is incorrect"}


Хм, а что мешает поставить  точку остановки, отправить запрос, и посмотреть какие данные приходят? Увидите наверно, что параметр 0, а раз он там 0, значит вы передаете туда то, что изначально не предназначено, верно? Далее открываете документацию, ищите раздел про параметры, и видите По умолчанию веб-API использует следующие правила для привязки параметров: Если параметр является "простым" типом, веб-API пытается получить значение из URI., а еще ниже [FromBody].

@EvgeniyZ Ставил точку остановки, у verifyCode значение 0, я пытался ставить аттрибут [FromBody], в таком случае вообще получал 415 статус код.

А стоп, я ошибся, если поставить [FromBody] то получаю такой ответ от Postman : {"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"00-17a9ebcd1b3399af118c847b8830dd2f-3667ed19df641352-00","errors":{"$":["The JSON value could not be converted to System.Int32. Path: $ | LineNumber: 0 | BytePositionInLine: 1."]}}

раз вы пометили int verify как [FromBody], то нужно передавать число 939797, а вы передаёте туда объект { "verifyCode": 939797 }

@iikuzmychov. да все правильно, только что попробовал, все сработало, спасибо. Можете создать ответ на вопрос, я отмечу его как принятый.
