Проверка входных параметров метода контроллера Web Api core 2.0 - PullRequest
0 голосов
/ 19 сентября 2018

Как вы проверяете входной параметр JObject для метода контроллера?Мне интересно, есть ли какие-нибудь поддерживаемые фреймворком функции для простой проверки?

Прямо сейчас я проверяю на ноль, если она не равна нулю, JObject анализируется и заполняет объект DTO и завершает бизнес-процесс.

Мой метод контроллера выглядит следующим образом:

public async Task<IActionResult> Login([FromBody]JObject jObject)
{
    try
    {
        if (jObject != null)
        {                    
            TokenDTO SiBagToken = await _account.Login(jObject);

            return SuccessStatusCode;

        }
        else
        {
            return NoContentStatusCode;
        }

    }
    catch(Exception ex)
    {

        return errorstatuscode;

    }          

}   

Вот как выглядит объект DTO:

public class AccountDTO
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public string oldPassword { get; set; }
}

1 Ответ

0 голосов
/ 19 сентября 2018

Позвольте каркасу проанализировать желаемую объектную модель, сделав ее параметром действия.

Атрибуты проверки могут быть применены к DTO

Например

public class AccountDTO {
    [Required]
    [StringLength(50, ErrorMessage = "Your {0} must be contain between {2} and {1} characters.", MinimumLength = 5)]
    public string UserName { get; set; }
    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    public string oldPassword { get; set; }
}

И проверено в действии с использованием контроллера ModelState.

public async Task<IActionResult> Login([FromBody]AccountDTO model) {
    try {
        if (ModelState.IsValid) {  
            TokenDTO SiBagToken = await _account.Login(model);
            return Ok();
        }
        return BadRequest(ModelState);            
    } catch(Exception ex) {
        return errorstatuscode;
    }          
}
...