婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在.NET Core 中使用 FluentValidation 進行規則驗證的方法

在.NET Core 中使用 FluentValidation 進行規則驗證的方法

熱門標簽:辰溪地圖標注 遼寧銀行智能外呼系統 許昌智能電銷機器人公司 姜堰電銷機器人 澳大利亞城市地圖標注 電銷機器人違法了嗎 上海浦東騰訊地圖標注位置 遼寧正規電銷機器人 海南銀行智能外呼系統商家

不用說,規則驗證很重要,無效的參數,可能會導致程序的異常。

如果使用Web API或MVC頁面,那么可能習慣了自帶的規則驗證,我們的控制器很干凈:

public class User
{
	[Required]
	public string FirstName { get; set; }
	
	[Required]
	public string LastName { get; set; }
}

這種很常見,但是今天我想給你一個更好的替代方案:FluentValidation, 通過這個庫,您可以流暢地定義用于對象驗證的復雜規則,從而輕松構建和理解驗證規則,您可以在 Github 上找到這個項目。

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

就這些了,您已經創建了第一個驗證器,是不是超級簡單!

還有一些其他的規則,比如 MinimumLength,MaximumLength和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();
}

常見的驗證規則

這個庫有很多現成的基本類型驗證規則, 對于字符串,您可以使用不同的方法,比如 EmailAddress,IsEnumName(檢查值是否在指定的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#section-6.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "traceId": "|c4523c02-4899b7f3df86a629.",
  "errors": { 
    "FirstName": [
      "您的名字長度已經超出了限制!"
    ]
  }
}

希望對您有幫助,您可以在官方文檔中找到更多的用法。

原文鏈接: https://www.code4it.dev/blog/fluentvalidation

到此這篇關于在.NET Core 中使用 FluentValidation 進行規則驗證的文章就介紹到這了,更多相關.NET Core 規則驗證內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • .Net Core3.0 WEB API中使用FluentValidation驗證(批量注入)
  • ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法
  • ASP.NET Core使用自定義驗證屬性控制訪問權限詳解
  • Asp.Net Core中基于Session的身份驗證的實現
  • .NET Core 2.0如何生成圖片驗證碼完整實例

標簽:晉城 崇左 深圳 撫州 威海 伊春 銅川 西藏

巨人網絡通訊聲明:本文標題《在.NET Core 中使用 FluentValidation 進行規則驗證的方法》,本文關鍵詞  在,.NET,Core,中,使用,FluentValidation,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在.NET Core 中使用 FluentValidation 進行規則驗證的方法》相關的同類信息!
  • 本頁收集關于在.NET Core 中使用 FluentValidation 進行規則驗證的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产激情一区二区三区桃花岛亚洲| 91亚洲国产成人精品一区二三| 欧美浪妇xxxx高跟鞋交| 国产一区二区看久久| 亚洲自拍偷拍图区| 日韩精品一区二区三区视频播放| 色综合天天做天天爱| 国产大陆亚洲精品国产| 美女脱光内衣内裤视频久久网站 | 久久蜜桃一区二区| 成人美女视频在线观看18| 久久黄色级2电影| 五月婷婷久久综合| 国产精品沙发午睡系列990531| 在线观看三级视频欧美| 成人激情综合网站| 大胆亚洲人体视频| 国产成人在线观看| 国内精品自线一区二区三区视频| 国产精品久久久久影院亚瑟| 久久久精品日韩欧美| 欧美一级专区免费大片| 91精品国产综合久久精品麻豆| 99久久国产综合精品色伊| 国产福利一区二区三区视频 | 日韩电影在线免费| 午夜影院久久久| 亚洲午夜免费福利视频| 综合分类小说区另类春色亚洲小说欧美 | 一区二区三区自拍| 国产夜色精品一区二区av| 欧美精品乱码久久久久久按摩| 欧美日韩国产区一| 91精品国产综合久久久蜜臀图片| 欧美一级高清片| 精品久久久久久久久久久久久久久久久 | 中文字幕欧美一区| 国产午夜亚洲精品午夜鲁丝片| 久久久影视传媒| 国产精品欧美久久久久无广告| 亚洲欧洲成人精品av97| 26uuuu精品一区二区| 国产欧美一区二区三区鸳鸯浴| 中文字幕一区二区三区乱码在线| 一区二区三区在线视频观看| 日韩中文字幕区一区有砖一区| 日韩**一区毛片| 国产成人一区二区精品非洲| 一本久道中文字幕精品亚洲嫩| 色综合久久天天| 欧美成人a∨高清免费观看| 国产人成一区二区三区影院| 亚洲美女在线一区| 美脚の诱脚舐め脚责91| 一区二区国产盗摄色噜噜| 麻豆国产欧美日韩综合精品二区| 成人一区在线观看| 欧美三级日韩在线| 欧美成人video| 天堂在线一区二区| 欧美在线一二三| 国产精品午夜在线| 久久精品久久99精品久久| 91福利资源站| 亚洲色图都市小说| 成人激情综合网站| 国产人成一区二区三区影院| 久久疯狂做爰流白浆xx| 777欧美精品| 七七婷婷婷婷精品国产| 色天天综合色天天久久| 亚洲色图另类专区| 91在线看国产| 亚洲精品久久7777| 欧美午夜在线一二页| 亚洲欧美日本在线| 91欧美一区二区| 亚洲欧美一区二区三区极速播放| www.成人网.com| 中文字幕综合网| 欧美天天综合网| 香蕉加勒比综合久久| 91精品综合久久久久久| 水野朝阳av一区二区三区| 欧美三级电影一区| 日韩av电影免费观看高清完整版 | 国产精品毛片大码女人| 高清久久久久久| 国产精品国产三级国产普通话三级| 国产成人99久久亚洲综合精品| 亚洲国产成人一区二区三区| 99精品国产视频| 亚洲无人区一区| 4438x成人网最大色成网站| 麻豆成人免费电影| 精品国产一区二区国模嫣然| 国产成人夜色高潮福利影视| 日韩毛片视频在线看| 欧美性三三影院| 久久99精品国产.久久久久久| 国产亚洲欧洲一区高清在线观看| 国产91高潮流白浆在线麻豆| 亚洲精品v日韩精品| 日韩一级二级三级| 成+人+亚洲+综合天堂| 悠悠色在线精品| 日韩精品最新网址| 成人免费看黄yyy456| 亚洲与欧洲av电影| 国产日韩欧美精品电影三级在线 | 经典三级一区二区| 国产农村妇女精品| 欧美一区二区三区影视| 成人丝袜高跟foot| 日韩高清中文字幕一区| 国产精品视频免费看| 欧美一区二区三区在线观看| 成人性生交大片免费看中文| 丝袜国产日韩另类美女| 久久久国产一区二区三区四区小说 | 在线免费观看日韩欧美| 天天做天天摸天天爽国产一区| 国产亚洲欧洲997久久综合| 精品视频在线免费看| 成人激情视频网站| 久久成人综合网| 亚洲一二三区在线观看| 久久久99久久精品欧美| 91麻豆精品国产自产在线观看一区 | 日本欧美韩国一区三区| 亚洲免费大片在线观看| 久久久三级国产网站| 欧美日韩国产区一| 在线观看日韩国产| 不卡av电影在线播放| 国产麻豆精品久久一二三| 日韩在线一区二区| 亚洲综合成人在线视频| 亚洲免费色视频| 中文字幕一区二区三区四区不卡| 欧美精品一区视频| 精品国产91洋老外米糕| 欧美裸体一区二区三区| 色哟哟精品一区| 色久综合一二码| 欧美中文字幕一二三区视频| av电影一区二区| 91蝌蚪porny成人天涯| av中文字幕亚洲| 成人激情小说网站| www.久久精品| 91老师片黄在线观看| 成人黄色免费短视频| 风间由美一区二区av101| 国产a久久麻豆| 福利电影一区二区| 99久久er热在这里只有精品66| 国产精品亚洲专一区二区三区| 国产乱人伦精品一区二区在线观看| 免费观看在线综合色| 免费观看久久久4p| 奇米777欧美一区二区| 国产综合久久久久久鬼色| 国产精一品亚洲二区在线视频| 国产不卡免费视频| 99re免费视频精品全部| 日本精品一级二级| 欧美一区二区三区日韩| 日韩精品一区二区三区在线 | 亚洲嫩草精品久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲狠狠爱一区二区三区| 免费在线观看视频一区| 国产成人久久精品77777最新版本| 国产成a人亚洲精品| 91成人在线免费观看| 3d动漫精品啪啪| 国产精品你懂的在线| 亚洲成人综合在线| 国产一区不卡视频| 色88888久久久久久影院按摩| 欧美日韩国产另类不卡| 久久久久国产一区二区三区四区| 国产精品动漫网站| 奇米综合一区二区三区精品视频| 国产 欧美在线| 欧美日韩成人一区| 久久夜色精品国产噜噜av| ●精品国产综合乱码久久久久| 日韩成人dvd| 国产精品99久| 91精品国产综合久久久蜜臀图片| 中文字幕欧美国产| 亚洲v中文字幕| 成人精品小蝌蚪| 精品国产一区二区三区av性色| 夜夜精品浪潮av一区二区三区 | 国产精品久久久久久亚洲伦| 天天综合色天天综合色h| 91视频观看免费|