phalGo 的參數(shù)過濾使用 beego 提供的獨(dú)立模塊 validation 進(jìn)行封裝改造 , 從而達(dá)到可以和 request 一同使用的效果 , 通過統(tǒng)一的報(bào)錯(cuò)機(jī)制對(duì)不匹配的參數(shù)進(jìn)行處理.
當(dāng)我們自己進(jìn)行參數(shù)驗(yàn)證時(shí),我們需要先獲取參數(shù),在判斷參數(shù)是否存在,判斷長度是否在制定范圍內(nèi),在判斷是否符合我們所需要的格式,尤其在Go語言需要花費(fèi)大量的代碼量來實(shí)現(xiàn)這一系列功能,但是在PhalGo中進(jìn)行了良好的封裝,對(duì)一個(gè)參數(shù)的基本處理都能在一行內(nèi)完成,如下所示:
name := Request.Param("name").Require(true).Max(30).SetDefault("喵咪").GetString()
一個(gè)連貫操作就對(duì)一個(gè)參數(shù)進(jìn)行很好的描述,而不用和傳統(tǒng)的寫法一樣消耗大量的代碼量在參數(shù)獲取驗(yàn)證上面
PhalGo的參數(shù)驗(yàn)證是和Request緊密結(jié)合在一起的大致格式如下:
Request.Param(參數(shù)名稱).你需要的驗(yàn)證規(guī)則.Get參數(shù)類型
這樣就可以獲取一個(gè)被驗(yàn)證過的參數(shù)
當(dāng)我們參數(shù)驗(yàn)證不通過是需要處理的,當(dāng)我們對(duì)所有參數(shù)定義完成之后,我們只需要重寫一下一個(gè)error處理語句方可對(duì)驗(yàn)證不通過的參數(shù)進(jìn)行處理:
//參數(shù)過濾error處理
if err := Request.GetError(); err != nil {
return Response.RetError(err, -1)
}
注意:此處默認(rèn)會(huì)返回首個(gè)驗(yàn)證失敗的參數(shù)報(bào)錯(cuò),當(dāng)有多個(gè)驗(yàn)證失敗也只返回首個(gè)
PhalGo的參數(shù)驗(yàn)證支持大部分驗(yàn)證規(guī)則:
更多建議: