C#WebAPI如何实现数据验证逻辑

发布时间:2024-11-24 11:58:27 作者:小樊
来源:亿速云 阅读:81

在C# Web API中实现数据验证逻辑,通常有以下几种方法:

  1. 使用数据注解(Data Annotations):

在模型类(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; }
}
  1. 使用IValidatable接口:

实现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("密码不能为空");
        }
    }
}
  1. 使用FluentValidation库:

安装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);
        }

        // 保存用户并返回响应
    }
}
  1. 使用Global.asax或Startup.cs中的配置:

在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接收到请求时,会自动进行数据验证,并在验证失败时返回相应的错误信息。

推荐阅读:
  1. Golang如何封装PHP常用函数
  2. ThinkPHP框架的渗透方法是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:C#WebAPI如何实现数据分页查询

下一篇:C++ hook库的开发效率提升

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》