<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法

        來源:懂視網 責編:小采 時間:2020-11-27 22:34:43
        文檔

        ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法

        ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法:介紹 驗證用戶輸入是一個Web應用中的基本功能。對于生產系統,開發人員通常需要花費大量時間,編寫大量的代碼來完成這一功能。如果我們使用FluentValidation構建ASP.NET Core Web API,輸入驗證的任務將比以前容易的多。 FluentValidation
        推薦度:
        導讀ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法:介紹 驗證用戶輸入是一個Web應用中的基本功能。對于生產系統,開發人員通常需要花費大量時間,編寫大量的代碼來完成這一功能。如果我們使用FluentValidation構建ASP.NET Core Web API,輸入驗證的任務將比以前容易的多。 FluentValidation

        介紹

        驗證用戶輸入是一個Web應用中的基本功能。對于生產系統,開發人員通常需要花費大量時間,編寫大量的代碼來完成這一功能。如果我們使用FluentValidation構建ASP.NET Core Web API,輸入驗證的任務將比以前容易的多。

        FluentValidation是一個非常流行的構建強類型驗證規則的.NET庫。

        配置項目

        第一步:下載FluentValidation

        我們可以使用Nuget下載最新的 FluentValidation

        PM> Install-Package FluentValidation.AspNetCore

        第二步:添加FluentValidation服務

        我們需要在 Startup.cs 文件中添加FluentValidation服務

        public void ConfigureServices(IServiceCollection services) 
        { 
         // mvc + validating
         services.AddMvc()
         .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
         .AddFluentValidation();
        }

        添加校驗器

        FluentValidation 提供了多種內置的校驗器。在下面的例子中,我們可以看到其中的2種

      1. NotNull 校驗器
      2. NotEmpty 校驗器
      3. 第一步: 添加一個需要驗證的數據模型

        下面我們添加一個 User 類。

        public class User
        {
         public string Gender { get; set; }
         public string FirstName { get; set; }
         public string LastName { get; set; }
         public string SIN { get; set; }
        }

        第二步: 添加校驗器類

        使用 FluentValidation 創建校驗器類,校驗器類都需要繼承自一個抽象類 AbstractValidator

        public class UserValidator : AbstractValidator<User>
        {
         public UserValidator()
         {
         // 在這里添加規則
         }
        }

        第三步: 添加驗證規則

        在這個例子中,我們需要驗證FirstName, LastName, SIN不能為null, 不能為空。我們也需要驗證工卡SIN(Social Insurance Number)編號是合法的

        public static class Utilities
        {
         public static bool IsValidSIN(int sin)
         {
         if (sin < 0 || sin > 999999998) return false;
        
         int checksum = 0;
         for (int i = 4; i != 0; i--)
         {
         checksum += sin % 10;
         sin /= 10;
        
         int addend = 2 * (sin % 10); 
         
         if (addend >= 10) addend -= 9;
         
         checksum += addend;
         sin /= 10;
         }
         
         return (checksum + sin) % 10 == 0;
         }
        }

        下面我們在 UserValidator 類的構造函數中,添加驗證規則

        public class UserValidator : AbstractValidator<User>
        {
         public UserValidator()
         {
         RuleFor(x => x.FirstName)
         .NotEmpty()
         .WithMessage("FirstName is mandatory.");
        
         RuleFor(x => x.LastName)
         .NotEmpty()
         .WithMessage("LastName is mandatory.");
        
         RuleFor(x => x.SIN)
         .NotEmpty()
         .WithMessage("SIN is mandatory.")
         .Must((o, list, context) =>
         {
         if (null != o.SIN)
         {
         context.MessageFormatter.AppendArgument("SIN", o.SIN);
         return Utilities.IsValidSIN(int.Parse(o.SIN));
         }
         return true;
         })
         .WithMessage("SIN ({SIN}) is not valid.");
         } 
        }

        第四步: 注入驗證服務

        public void ConfigureServices(IServiceCollection services) 
        { 
         // 添加驗證器
         services.AddSingleton<IValidator<User>, UserValidator>();
         // mvc + validating
         services
         .AddMvc()
         .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
         .AddFluentValidation();
        }

        第五步:在 Startup.cs 中管理你的驗證錯誤

        ASP.NET Core 2.1及以上版本中,你可以覆蓋ModelState管理的默認行為(ApiBehaviorOptions)

        public void ConfigureServices(IServiceCollection services) 
        { 
         // Validators
         services.AddSingleton<IValidator<User>, UserValidator>();
         // mvc + validating
         services
         .AddMvc()
         .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
         .AddFluentValidation();
        
         // override modelstate
         services.Configure<ApiBehaviorOptions>(options =>
         {
         options.InvalidModelStateResponseFactory = (context) =>
         {
         var errors = context.ModelState
         .Values
         .SelectMany(x => x.Errors
         .Select(p => p.ErrorMessage))
         .ToList();
         
         var result = new
         {
         Code = "00009",
         Message = "Validation errors",
         Errors = errors
         };
         
         return new BadRequestObjectResult(result);
         };
         });
        }

        當數據模型驗證失敗時,程序會執行這段代碼。

        在這個例子,我設置了如何向客戶端顯示錯誤。這里返回結果中,我只是包含了一個錯誤代碼,錯誤消息以及錯誤對象列表。

        下面讓我們看一下最終效果。

        使用驗證器

        這里驗證器使用起來非常容易。

        你只需要創建一個action, 并將需要驗證的數據模型放到action的參數中。

        由于驗證服務已在配置中添加,因此當請求這個action時, FluentValidation 將自動驗證你的數據模型!

        第一步:創建一個使用待驗證數據模型的action

        [Route("api/[controller]")]
        [ApiController]
        public class DemoValidationController : ControllerBase
        {
         [HttpPost]
         public IActionResult Post(User user)
         {
         return NoContent();
         }
        }

        第二步:使用POSTMAN測試你的action

        總結

        在本篇博客中,我講解了如何使用 FluentValidation 進行數據模型驗證。

        本篇源代碼 https://github.com/lamondlu/FluentValidationExample

        原文鏈接:Common features in ASP.NET Core 2.1 WebApi: Validation

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法

        ASP.NET Core WebApi中使用FluentValidation驗證數據模型的方法:介紹 驗證用戶輸入是一個Web應用中的基本功能。對于生產系統,開發人員通常需要花費大量時間,編寫大量的代碼來完成這一功能。如果我們使用FluentValidation構建ASP.NET Core Web API,輸入驗證的任務將比以前容易的多。 FluentValidation
        推薦度:
        標簽: 驗證的 net core
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 永久免费毛片在线播放| 老汉精品免费AV在线播放| 亚洲A∨无码无在线观看| 国产AV无码专区亚洲AVJULIA| 亚洲国产精品综合久久2007| 久久免费的精品国产V∧| 亚洲AV无码一区东京热久久 | 久久久久亚洲av无码尤物| 99re6在线精品免费观看| 国产亚洲色婷婷久久99精品| 免费观看成人久久网免费观看| 亚洲va无码手机在线电影| 久久精品无码专区免费东京热| 久久久久久亚洲AV无码专区| 久热中文字幕在线精品免费| 久久久久一级精品亚洲国产成人综合AV区 | 91av在线免费视频| 亚洲一级免费毛片| 中文字幕在线观看免费| 亚洲高清国产AV拍精品青青草原| 久久久久久久久久国产精品免费| 成人爱做日本视频免费| 亚洲乱人伦精品图片| 妞干网在线免费观看| a一级毛片免费高清在线| 久久亚洲精精品中文字幕| 欧美在线看片A免费观看| 爱情岛论坛免费视频| 亚洲大片在线观看| 无码一区二区三区AV免费| 国产精品亚洲va在线观看| 在线成人a毛片免费播放| 日韩免费高清一级毛片| 亚洲av无码不卡一区二区三区| 永久免费AV无码国产网站| 大片免费观看92在线视频线视频| 久久精品a亚洲国产v高清不卡| 国产又黄又爽又猛的免费视频播放| 在线观看日本亚洲一区| 在线a人片天堂免费观看高清| WWW免费视频在线观看播放|