想要 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è)叫做 FluentValidation(NuGet 中可以下載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