当前位置: 首页 > news >正文

网站的开发与建设项目做网络销售怎么样

网站的开发与建设项目,做网络销售怎么样,做网站需要注意哪些,重庆推广网站排名不用说#xff0c;规则验证很重要#xff0c;无效的参数#xff0c;可能会导致程序的异常。如果使用Web API或MVC页面#xff0c;那么可能习惯了自带的规则验证#xff0c;我们的控制器很干净#xff1a;public class User {[Required]public string FirstName { get; se… 不用说规则验证很重要无效的参数可能会导致程序的异常。如果使用Web API或MVC页面那么可能习惯了自带的规则验证我们的控制器很干净public class User {[Required]public string FirstName { get; set; }[Required]public string LastName { get; set; } } 这种很常见但是今天我想给你一个更好的替代方案FluentValidation 通过这个库您可以流畅地定义用于对象验证的复杂规则从而轻松构建和理解验证规则您可以在 Github[1] 上找到这个项目。安装 FluentValidation我新建了一个很简单的.NET Core 的Web API 程序只有一个接口是用户注册入参是一个User类, 然后在Nuget中安装 FluentValidation。创建第一个验证对于要验证的每个类必须创建其自己的验证器每个验证器类都必须继承AbstractValidatorT其中T是要验证的类,并且所有验证规则都在构造函数中定义。最简单的验证是针对空值如果要指定FirstName和LastName都不能为空这个验证器是这样public class UserValidator : AbstractValidatorUser {public UserValidator(){RuleFor(x x.FirstName).NotEmpty();RuleFor(x x.LastName).NotEmpty();} } 就这些了您已经创建了第一个验证器是不是超级简单还有一些其他的规则比如 MinimumLengthMaximumLength和Length用于验证长度您可以把多个规则指定到一个字段就像这样public class UserValidator : AbstractValidatorUser {public UserValidator(){RuleFor(x x.FirstName).NotEmpty();RuleFor(x x.FirstName).MinimumLength(3);RuleFor(x x.FirstName).MaximumLength(20);RuleFor(x x.LastName).NotEmpty();} } 验证入参我们之前已经定义了验证规则现在开始使用它您只需要new 一个UserValidator对象然后调用Validate方法, 它会返回一个对象其中包含了验证状态和所有没有通过验证的信息。[HttpPost] public IActionResult Register(User newUser) {var validator new UserValidator();var validationResult validator.Validate(newUser);if (!validationResult.IsValid){return BadRequest(validationResult.Errors.First().ErrorMessage);}return Ok(); } 如果我运行程序然后输入一个超长的名字{FirstName: 赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张,LastName: 张 } 我会收到验证错误The length of First Name must be 20 characters or fewer. You entered 24 characters。好吧我不喜欢这个消息那么你可以自定义错误消息这很简单您可以使用 WithMessage 方法。- RuleFor(x x.FirstName).MaximumLength(20);RuleFor(x x.FirstName).MaximumLength(20).WithMessage(您的名字长度已经超出了限制!); 流利验证你可以把验证规则改成下边这样- RuleFor(x x.FirstName).NotEmpty(); - RuleFor(x x.FirstName).MinimumLength(3);RuleFor(x x.FirstName).NotEmpty().MinimumLength(3); 然后也可以把验证规则应用于其他的属性就像这样public UserValidator() {RuleFor(x x.FirstName).MaximumLength(20).WithMessage(您的名字长度已经超出了限制!).NotEmpty().MinimumLength(3);RuleFor(x x.LastName).NotEmpty(); } 常见的验证规则这个库有很多现成的基本类型验证规则, 对于字符串您可以使用不同的方法比如 EmailAddressIsEnumName检查值是否在指定的Enum类型中定义和 InclusiveBetween, 检查该值是否在定义的范围内。现在我在User类添加了另外两个字段Password 和 ConfirmPassword。Password字段是一个字符串有效的长度必须在5到15个字符之间并且要符合正则为了定义是否满足安全规则我定义了一个HasValidPassword方法它会返回一个bool值。private bool HasValidPassword(string pw) {var lowercase new Regex([a-z]);var uppercase new Regex([A-Z]);var digit new Regex((\\d));var symbol new Regex((\\W));return (lowercase.IsMatch(pw) uppercase.IsMatch(pw) digit.IsMatch(pw) symbol.IsMatch(pw)); } 然后在密码验证中使用RuleFor(x x.FirstName).MaximumLength(20).WithMessage(您的名字长度已经超出了限制!).NotEmpty().MinimumLength(3);RuleFor(x x.LastName).NotEmpty();RuleFor(x x.Password).Length(5, 15).Must(x HasValidPassword(x)); 还可以简化一些RuleFor(x x.Password).Length(5, 15) - .Must(x HasValidPassword(x));.Must(HasValidPassword);} ConfirmPassword字段的唯一要求是等于Password字段:RuleFor(x x.ConfirmPassword).Equal(x x.Password).WithMessage(2次密码不一致); 注入验证器修改Startup类中的ConfigureServices方法public void ConfigureServices(IServiceCollection services) {services.AddControllers().AddFluentValidation();services.AddTransientIValidatorUser, UserValidator(); } 注意这个地方的生命周期是 Transient。这样在调用注册接口的时候会自动进行规则验证[HttpPost] public IActionResult Register(User newUser) {return Ok(); } 然后我们再尝试传入参数来调用接口{FirstName: 赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张,LastName: 张 } 很明显验证不通过接口会返回这样的错误信息{type: https://tools.ietf.org/html/rfc7231#p-6.5.1,title: One or more validation errors occurred.,status: 400,traceId: |c4523c02-4899b7f3df86a629.,errors: { FirstName: [您的名字长度已经超出了限制!]} }希望对您有帮助您可以在官方文档中找到更多的用法。原文链接 https://www.code4it.dev/blog/fluentvalidation[2]最后欢迎扫码关注我们的公众号 【全球技术精选】专注国外优秀博客的翻译和开源项目分享也可以添加QQ群 897216102References[1] Github: https://github.com/FluentValidation/FluentValidation[2] https://www.code4it.dev/blog/fluentvalidation: https://www.code4it.dev/blog/fluentvalidation
http://www.pierceye.com/news/732864/

相关文章:

  • 老区建设网站亚马逊市场营销案例分析
  • 固原建设厅官方网站智慧树网站的章节题做不了
  • 网站建设人才logo设计在线
  • 在网站上做广告教育网站平面设计
  • 中文html网站模板下载做健康类网站怎么备案
  • 何为响应式网站建设公司网站的步骤
  • 网站有哪些分类网游开发公司
  • 织梦网站做瀑布流方便建设网站平台的建议
  • 网站建设实验报告阿里云搭建个人博客wordpress
  • 深圳市福田建设局网站文创产品设计就业前景
  • 龙岗建设网站制作做网站的目的是什么
  • 网站公司做的比较好网站建设业务饱和了吗
  • 做网站做电脑版还是手机版好可以访问国外网站的dns
  • 网站制作素材图片英文站 wordpress seo优化
  • 现在ui做的比较好的网站徐州经济技术开发区
  • 网站设计公司网帐号售卖网站建设
  • 信阳建设网站哪家好wordpress 文章评价插件
  • 网校网站模板东莞网站关键字
  • 做游戏的php网站2019做seo网站
  • 做外贸那个网站好免费asp主机网站
  • 网站设计服务要不要交文化事业建设费在线解压zip网站
  • 沈阳关键词自然排名西安百度seo排名软件
  • 徐州网站建设市场分析手工灯笼简单又好看
  • 网站开发学什么语音提供设计的的网站
  • 微站和网站数据同步icp备案查询
  • 诸城网站制作wordpress圆角插件汉化
  • 杨家平网站建设小程序开发网站
  • 校园文化建设图片网站浅析图书馆门户网站建设
  • 网站开发与应用案例教程哈尔滨自助建站系统
  • 网站关键词排名seo百度网址链接是多少