我有一个函数,我的控制器正在调用这个函数来检查一个帐户是否有效。
我在想,在这个功能中,最好的设计是什么?最好是抛出一个异常还是返回一条错误消息?
选项1,我目前正在使用
public void ValidateLocalAccount(Login dto) {
var user = _userService.GetUserByUsername(dto.username);
if (user == null)
throw new Exception("User does not exist");
if (user.accountType != AccountType.Local)
throw new Exception("Account is not local");
}主计长:
[HttpPost("Login")]
public async Task<ActionResult> Login([FromBody] Login loginDto)
{
try
{
_accountService.ValidateLocalAccount(loginDto);
return Ok(await _accountService.GetToken(loginDto));
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}选项2,这在我看来是不传统的。
public <bool, string> ValidateLocalAccount(Login dto) {
var user = _userService.GetUserByUsername(dto.username);
if (user == null)
return (false,"User does not exist");
if (user.accountType != AccountType.Local)
return (false,"Account is not local");
return (true,string.empty);
}主计长:
[HttpPost("Login")]
public async Task<ActionResult> Login([FromBody] Login loginDto)
{
var res = _accountService.ValidateLocalAccount(loginDto);
if(!res.item1)
return BadRequest(res.item2)
return Ok(await _accountService.GetToken(loginDto));
}我会误用选项1的例外吗,因为我用它来控制流程吗?因此,我的问题是什么时候应该选择异常而不是错误代码或返回null?哪一种设计更好?干杯。
发布于 2019-03-10 13:08:57
发布于 2019-03-10 13:04:00
最佳实践是返回正确的状态代码,如404 (未找到)、401 (未经授权)或500 (内部服务器错误)。
查看HTTP代码的列表。
在编写API的情况下,返回状态代码是最好的做法,但是如果您正在编写像剃刀页面这样的web应用程序,那么最好返回错误消息,而不是例外。
https://stackoverflow.com/questions/55087836
复制相似问题