想要 ASP.NET Web API 執(zhí)行模型驗(yàn)證,同時(shí)可以和 ASP.NET MVC 共享一些驗(yàn)證邏輯。

解決方案

  ASP.NET Web API  ASP.NET MVC 支持一樣的驗(yàn)證機(jī)制,都是通過(guò)System.ComponentModel.DataAnnoataions 的屬性驗(yàn)證。使用框架提供的相關(guān)驗(yàn)證屬性,已足夠來(lái)用來(lái)驗(yàn)證模型。

想要更細(xì)粒度的驗(yàn)證,我們可以選擇在我們的模型中實(shí)現(xiàn) IValudateObject(來(lái)自于System.ComponentModel.DataAnnotations)。如果所有的屬性都驗(yàn)證通過(guò),ASP.NET Web API 將會(huì)調(diào)用接口的Validate 方法,在這里我們可以進(jìn)行更進(jìn)一步的進(jìn)行實(shí)體驗(yàn)證。這是和 MVC 里面的行為一樣,并且,我們甚至可以在 Web API  MVC 中使用同一個(gè) DTO。

  還有另一種方法,就是可以使用一個(gè)叫做 FluentValidationNuGet 中可以下載FluentValidation)的第三方程序庫(kù),他可以構(gòu)建更強(qiáng)大的驗(yàn)證場(chǎng)景。在這樣的情況下,我們?nèi)匀恍柙谖覀兊哪P椭袑?shí)現(xiàn) IValidateObject 接口,同時(shí)需要依賴于FluentValidation 驗(yàn)證器,而不是內(nèi)嵌的驗(yàn)證邏輯。

小提示 ASP.NET Web API 

網(wǎng)友評(píng)論