在C# Web API中实现数据验证,通常有以下几种方法:
Model Validation是一种内置的数据验证方法,它允许你在实体类的属性上添加验证属性,例如[Required]、[StringLength]等。当API接收到请求时,会自动进行模型验证。
首先,在实体类中添加验证属性:
public class User
{
[Required(ErrorMessage = "用户名不能为空")]
[StringLength(100, ErrorMessage = "用户名长度不能超过100个字符")]
public string UserName { get; set; }
[Required(ErrorMessage = "密码不能为空")]
[StringLength(100, ErrorMessage = "密码长度不能超过100个字符")]
public string Password { get; set; }
}
然后,在API控制器中使用[ApiController]和[HttpPost]属性:
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create([FromBody] User user)
{
if (ModelState.IsValid)
{
// 保存用户信息到数据库
return Ok();
}
else
{
// 返回验证错误信息
return BadRequest(ModelState);
}
}
}
Data Annotations是另一种内置的数据验证方法,它允许你在实体类的属性上添加验证属性,例如[Required]、[StringLength]等。与Model Validation类似,当API接收到请求时,会自动进行数据验证。
首先,在实体类中添加验证属性:
public class User
{
[Required(ErrorMessage = "用户名不能为空")]
[StringLength(100, ErrorMessage = "用户名长度不能超过100个字符")]
public string UserName { get; set; }
[Required(ErrorMessage = "密码不能为空")]
[StringLength(100, ErrorMessage = "密码长度不能超过100个字符")]
public string Password { get; set; }
}
然后,在API控制器中使用[ApiController]和[HttpPost]属性:
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create([FromBody] User user)
{
if (ModelState.IsValid)
{
// 保存用户信息到数据库
return Ok();
}
else
{
// 返回验证错误信息
return BadRequest(ModelState);
}
}
}
IValidatableObject接口允许你在实体类中实现自定义的验证逻辑。首先,让你的实体类实现IValidatableObject接口,并添加Validate方法:
public class User : IValidatableObject
{
[Required(ErrorMessage = "用户名不能为空")]
[StringLength(100, ErrorMessage = "用户名长度不能超过100个字符")]
public string UserName { get; set; }
[Required(ErrorMessage = "密码不能为空")]
[StringLength(100, ErrorMessage = "密码长度不能超过100个字符")]
public string Password { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
// 添加自定义验证逻辑
if (UserName == "admin" && Password == "password")
{
yield return new ValidationResult("管理员用户名密码不能相同");
}
}
}
然后,在API控制器中使用[ApiController]和[HttpPost]属性:
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpPost]
public IActionResult Create([FromBody] User user)
{
if (ModelState.IsValid)
{
// 保存用户信息到数据库
return Ok();
}
else
{
// 返回验证错误信息
return BadRequest(ModelState);
}
}
}
这些方法可以根据你的需求进行组合使用,以实现更复杂的数据验证逻辑。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。