您好,登錄后才能下訂單哦!
在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。