您好,登錄后才能下訂單哦!
在C# Web API中實現數據驗證邏輯,通常有以下幾種方法:
在模型類(Model)中的屬性上添加數據注解,以定義驗證規則。例如:
public class User
{
[Required(ErrorMessage = "用戶名不能為空")]
[StringLength(50, ErrorMessage = "用戶名長度不能超過50個字符")]
public string Username { get; set; }
[Required(ErrorMessage = "密碼不能為空")]
[StringLength(50, ErrorMessage = "密碼長度不能超過50個字符")]
public string Password { get; set; }
}
實現IValidatable接口,在模型類中定義一個Validate方法,用于自定義驗證邏輯。例如:
public class User : IValidatable
{
[Required(ErrorMessage = "用戶名不能為空")]
[StringLength(50, ErrorMessage = "用戶名長度不能超過50個字符")]
public string Username { get; set; }
[Required(ErrorMessage = "密碼不能為空")]
[StringLength(50, ErrorMessage = "密碼長度不能超過50個字符")]
public string Password { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.IsNullOrEmpty(Username))
{
yield return new ValidationResult("用戶名不能為空");
}
if (string.IsNullOrEmpty(Password))
{
yield return new ValidationResult("密碼不能為空");
}
}
}
安裝FluentValidation庫(https://github.com/FluentValidation/FluentValidation),為模型類創建一個驗證器。例如:
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
RuleFor(x => x.Username).NotEmpty().MaximumLength(50);
RuleFor(x => x.Password).NotEmpty().MaximumLength(50);
}
}
在API控制器中使用FluentValidation驗證器:
public class UsersController : ApiController
{
private readonly UserValidator _userValidator;
public UsersController(IValidator<User> userValidator)
{
_userValidator = userValidator;
}
[HttpPost]
public IHttpActionResult Create([FromBody] User user)
{
var validationResult = _userValidator.Validate(user);
if (!validationResult.IsValid)
{
return BadRequest(validationResult);
}
// 保存用戶并返回響應
}
}
在Global.asax或Startup.cs中配置數據驗證中間件,以便對所有請求進行驗證。例如,在Startup.cs中添加以下代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<UserValidator>());
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
這樣,當API接收到請求時,會自動進行數據驗證,并在驗證失敗時返回相應的錯誤信息。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。