1. 程式人生 > >ABP框架學習之——資料校驗

ABP框架學習之——資料校驗

校驗介紹

一個應用的輸入應該首先要驗證。這個輸入可以是使用者的輸入,也可以是另一個應用的輸入。在一個Web應用中,驗證通常要實現2次:第一次是客戶端驗證,第二次是服務端驗證。客戶端的驗證是為了更好的使用者體驗,通過檢測表單的欄位來提醒使用者必須的欄位;服務端的驗證是更嚴格且無法避免的。
服務端的驗證是在應用服務層實現的。應用服務方法應該首先檢查(驗證)輸入然後在使用。ABP提供了一個不錯的基礎設施來驗證應用服務方法的輸入。

基礎驗證

檢視模板建立的dto中可以看見如下的內容,其中Required和StringLength都繼承於ValidationAttribute類,如果我們需要自定義這樣公用的驗證方式,也可以自己繼承這個類,並引用。

    public class RoleDto : EntityDto<int>
    {
        [Required]
        [StringLength(AbpRoleBase.MaxNameLength)]
        public string Name { get; set; }

        [Required]
        [StringLength(AbpRoleBase.MaxDisplayNameLength)]
        public string DisplayName { get; set; }

        public
string NormalizedName { get; set; } [StringLength(Role.MaxDescriptionLength)] public string Description { get; set; } public bool IsStatic { get; set; } public List<string> Permissions { get; set; } }

我們自己定義的dto也可以直接使用如下:

    public class UpdateNoteDto : EntityDto<int
> { /// <summary> /// 標題 /// </summary> public string Title { get; set; } /// <summary> /// 內容 /// </summary> [Required] public string Content { get; set; } /// <summary> /// 上次修改時間 /// </summary> public DateTime? LastModificationTime { get; set; } }

測試一下,在Swagger UI 中:

api傳送的內容

收到的回覆

自定義驗證

對於特殊的邏輯,我們只在這個功能中驗證資料,別的地方用不到,我們也可以實現ICustomValidate介面類自定義驗證:

    public class PublicNoteDto: UpdateNoteDto,ICustomValidate
    {
        /// <summary>
        /// 簡單描述,用於微信推送時的描述或者其他
        /// </summary>
        public string Des { get; set; }
        /// <summary>
        /// 封面圖片,可用於微信推送時或者其他
        /// </summary>
        [Required]
        public string Img { get; set; }
        /// <summary>
        /// 關鍵字,可用於搜尋,分類等
        /// </summary>
        public string Tags { get; set; }
        /// <summary>
        /// 是否釋出
        /// </summary>
        public bool IsPublic { get; set; }

        public void AddValidationErrors(CustomValidationContext context)
        {
            if (string.IsNullOrEmpty(Des))
            {
                string error = "描述不能為空!";
                context.Results.Add(new ValidationResult(error));
            }
            if (Des.Length < 10)
            {
                string error = "描述不能少於10個字!";
                context.Results.Add(new ValidationResult(error));
            }
            if (Des.Length > 200)
            {
                string error = "描述不能大於200個字!";
                context.Results.Add(new ValidationResult(error));
            }
        }
    }

api傳送的內容

收到的回覆

標準化

標準化就是在驗證之後,進行一些額外的操作。
具有Normalize方法的IShouldNormalize介面。如果實現了這個介面,Normalize方法就會在驗證之後呼叫。

    public class CreateNoteDto : IShouldNormalize
    {
        /// <summary>
        /// 建立時間
        /// </summary>
        public DateTime? CreationTime { get; set; }
        /// <summary>
        /// 建立人
        /// </summary>
        public long CreatorUserId { get; set; }
        /// <summary>
        /// 內容的資料型別 markdown內容,html內容,或者其他
        /// </summary>
        public int TextType { get; set; }

        public void Normalize()
        {
            CreationTime = DateTime.Now;
        }
    }

api傳送的內容

我們service收到的資料

相關推薦

ABP框架學習——資料

校驗介紹 一個應用的輸入應該首先要驗證。這個輸入可以是使用者的輸入,也可以是另一個應用的輸入。在一個Web應用中,驗證通常要實現2次:第一次是客戶端驗證,第二次是服務端驗證。客戶端的驗證是為了更好的使用者體驗,通過檢測表單的欄位來提醒使用者必須的欄位;服

第四十章:Spring MVC框架資料14

第十二章 資料校驗 在Web應用三層架構體系中,表述層負責接收瀏覽器提交的資料,業務邏輯層負責資料的處理。為了能夠讓業務邏輯層基於正確的資料進行處理,我們需要在表述層對資料進行檢查,將錯誤的資料隔絕在業務邏輯層之外。 1.校驗概述 JSR 303是Java為Bean資料合法性

淺談軟體測試資料

註明:DBCheck即資料庫資料校驗;一.為什麼需要DBCheck?你同學去年向你借了一萬大洋,今天你打電話想他還錢給你,老同學很大方的給你說馬上給你打到銀行卡上。一會兒,回電話給你說,錢已經全部打到你銀行卡了,讓你等會兒去查詢自己銀行卡的來賬。可是,你左等右等,等到西湖的水都幹了,還是沒有收到銀行的進賬通知

ABP框架學習——授權(Authorization)

定義許可權 一個唯一的許可權是為需要授權的每個操作定義的。我們應該在使用許可權之前定義一個許可權。ABP的設計是模組化的,因此不同的模組可以有不同的許可權。為了定義模組的許可權,應該建立一個派生自AuthorizationProvider,通過abp官網

SSM整合資料

什麼是校驗? 一個專案中,通常使用校驗較多的地方是前端的校驗,比如說在頁面中js的校驗(表單驗證)。對於安全性要求較高的,則會要求在服務端也進行校驗。 服務端校驗: 控制層Controller: 校

struts2資料

一、Struts2輸入校驗介紹 Struts2的輸入校驗和型別轉換都是對請求引數進行處理。 輸入校驗顧名思義就是請求引數是否能夠滿足一定的要求; 客戶端校驗&伺服器端校驗 客戶端校驗是指在瀏覽器這端通過JavaScript進行初步校

Boost學習CRC

迴圈冗餘校驗(CRC)是一種根據網路資料封包或電腦檔案等資料產生簡短固定位數的一種雜湊函式,主要用來檢測或校驗資料傳輸或者儲存後可能出現的錯誤。它是由W. Wesley Peterson在他1961年發表的論文中披露。[來自維基百科]CRC校驗的基本思想是利用線性編碼理論,在

Android開發實用工具類資料

package com.heliquan.test.util;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import

【Net】ABP框架學習正面硬鋼

前言 本文介紹另一種學習ABP框架的方法,該方法為正面硬鋼學習法。。。 我們不去官網下載模板,直接引用DLL,直接使用。 WebApi專案建立 首先建立一個WebApi專案,結構如下。 然後Nuget搜尋ABP,安裝ABP框架。(我這裡安裝的是5.1.0,因為最高版本安裝不上) 在安裝ABP前先檢查當前安裝

三大框架(ssh)——struts深入學習(Validator資料

使用Validator配置檔案校驗資料 我們在提交表單資料時,通常都需要增加資料的校驗處理。資料校驗分為:客戶端校驗、伺服器端校驗。Struts2給我們提供了豐富的支援! Struts2提供了很多資料校驗器,常用的有 校驗器 用法

POI學習(一)資料建立下拉列表框

POI建立Excel下拉列表框來設定表格資料有效性,這裡需要使用幾個重要的物件,關係依賴圖如下  XSSFDataValidationHelper 工具類 XSSFDataValidationConstraint 設定資料有效性條件 CellRangeAddressList 設定有效區域 XSSFDataV

springboot學習第八章:統一異常,資料處理

springboot中,預設在傳送異常時,會跳轉值/error請求進行錯誤的展現,根據不同的Content-Type展現不同的錯誤結果,如json請求時,直接返回json格式引數。   瀏覽器訪問異常時:   使用postman訪問時:  

資料框架

(參考:http://blog.csdn.net/yang_hui_liang/article/details/79133252 http://blog.csdn.net/yang_hui_liang/article/details/79133173) 資料校驗框架 Spring

Netty框架學習(五):細說資料容器-ByteBuf

1. 簡介 位元組是網路資料的基本單位。 Java NIO 提供了 ByteBuffer 作為位元組容器,但是這個類使用起來過於複雜,而且也有些繁瑣。Netty使用了即易於使用又具備良好效能的ByteBuf來替代ByteBuffer。 本文將對ByteBuffer做一個簡單的總結。

Netty框架學習(三):細說Netty的資料傳輸

1. 概述 使用Java 自帶的API開發IO系統時,如果需要對傳輸的方式進行切換,例如從阻塞傳輸切換到非阻塞傳輸, 那麼可能會由於兩種方式的API不相容問題需要大面積的修改程式碼。然而 Netty 則為它所有的傳輸方式提供了一個通用 API,這使得只需要修改一下物件申明的型別就能完成傳

【SpringMVC學習06】SpringMVC中的資料

  這一篇博文主要總結一下springmvc中對資料的校驗。在實際中,通常使用較多是前端的校驗,比如頁面中js校驗,對於安全要求較高的建議在服務端也要進行校驗。服務端校驗可以是在控制層conroller

SpringMVC學習(三)———— springmvc的資料的實現

一、什麼是資料校驗?       這個比較好理解,就是用來驗證客戶輸入的資料是否合法,比如客戶登入時,使用者名稱不能為空,或者不能超出指定長度等要求,這就叫做資料校驗。       資料校驗分為客戶端校驗和服務端校驗         客戶端校驗:js校驗         服務端校驗:springmvc

JSR-303 資料學習(一)

一、JSR-303簡介 JSR-303 是 JAVA EE 6 中的一項子規範,叫做 Bean Validation,官方參考實現是Hibernate Validator。 此實現與 Hibernate ORM 沒有任何關係。 JSR 303 用於對 Java B

Robot Framework輸出日誌、資料

本文通過簡單的例項來講解Robot Framework如何輸出日誌資訊,以及如何對獲取的資料進行校驗。1、具體程式碼頁面如下,然後再逐行講解指令碼的含義。L1、呼叫內建關鍵字Log,   第一個引數是“test my log ” ,第二個引數是“warn”。即列印一條log,

Struts2學習筆記(十)——資料

Struts2的資料校驗屬於伺服器端校驗,Struts2 支援校驗方式 : 手動校驗(程式碼校驗) :在伺服器端通過編寫java程式碼,完成資料校驗自動校驗(配置校驗) :XML配置校驗(主流) 和 註解配置校驗 1、手動校驗    1)Struts2的手動校驗步驟: