PhalGo-Request對(duì)Echo進(jìn)行了封裝,目的是為了減少獲取請(qǐng)求參數(shù),轉(zhuǎn)換類(lèi)型,判斷請(qǐng)求參數(shù)有效此類(lèi)重復(fù)操作帶來(lái)的代碼量,PhalGo-Request支持Get,Post,Json三類(lèi)請(qǐng)求參數(shù),并且使用連貫操作來(lái)獲取API需要的參數(shù)減少重復(fù)代碼量,.
PhalGo是靈活的你可以使用PhalGo-Request也可以使用Echo原生的參數(shù)獲取(在使用restful風(fēng)格的情況需要使用Echo原生獲取方式),如果使用PhalGo-Request需要在接口內(nèi)部進(jìn)行初始化方可使用:
return func(c echo.Context) error {
Request := phalgo.NewRequest(c)
}
參數(shù)兩種傳遞方式想必不用多說(shuō)大家都之道就是GET和POST方式,我們可以通過(guò)以下方式來(lái)獲取GET或POST請(qǐng)求參數(shù):
//獲取get請(qǐng)求參數(shù),接受string類(lèi)型
id := Request.GetParam("id").GetString()
//獲取post參數(shù),接受string類(lèi)型
id := Request.PostParam("id").GetString()
當(dāng)然如果你不想?yún)^(qū)分get和post參數(shù)可以這樣使用,優(yōu)先級(jí)GET->POST
id := Request.Param("id").GetString()
在獲取請(qǐng)求的時(shí)候在最后一步需要指定你獲取請(qǐng)求參數(shù)的類(lèi)型,PhalGo-Request現(xiàn)支持三種類(lèi)型的獲取,String,Int,Float幫助你更加方便的處理參數(shù)類(lèi)型不需要自己進(jìn)行類(lèi)型轉(zhuǎn)換多余的操作,使用方法分別如下:
id := Request.PostParam("id").GetString()
id := Request.PostParam("id").GetInt()
id := Request.PostParam("id").GetFloat()
說(shuō)道請(qǐng)求處理還有一個(gè)不得不說(shuō)的請(qǐng)求類(lèi)型那就是Json,我們?cè)诤芏鄰?fù)雜的業(yè)務(wù)情況下接口需要接受一個(gè)列表?那當(dāng)然會(huì)是一個(gè)json對(duì)象,比如說(shuō)我們要對(duì)請(qǐng)求參數(shù)進(jìn)行加密,我們通常會(huì)把所有的請(qǐng)求參數(shù)放到一個(gè)json中進(jìn)行加密然后傳遞過(guò)來(lái)解密之后使用,所以json在請(qǐng)求參數(shù)處理中是必不可少的,PhalGo-Request也是意識(shí)到了這一點(diǎn)對(duì)json處理進(jìn)行了封裝,我們來(lái)看一下最簡(jiǎn)單的從請(qǐng)求參數(shù)中來(lái)獲取json參數(shù)的一個(gè)小例子:
//通過(guò)get請(qǐng)求獲取params的json字符串
params := Request.GetParam("params").GetString()
//注入Json字符串
Request.SetJson(params)
//通過(guò)JsonParam和GetJsonString來(lái)獲取想要的參數(shù)想要的類(lèi)型
id := Request.JsonParam("user.id").GetString()
我們?cè)讷@取Json參數(shù)時(shí)需要使用JsonParam函數(shù)JsonParam接受一個(gè)字符串,字符串通過(guò)"."隔開(kāi)代表了獲取json的層級(jí)關(guān)系,為了更好的說(shuō)明有入下一個(gè)例子:
json := `{
"userlist": {
"miaomi": {
"username": "喵了個(gè)咪"
}
}
}`
Request.SetJson(json)
//這樣就能獲取到字符串"喵了個(gè)咪"
Request.JsonParam("userlist.miaom.usernamei").GetString()
Json也同樣支持String,Int,Float類(lèi)型 ,除此之外Json類(lèi)型還多一個(gè)類(lèi)型那就是json類(lèi)型GetJson方法,GetJson會(huì)返回一個(gè)JS實(shí)例,我們可以通過(guò)JS實(shí)例來(lái)獲取更多的類(lèi)型比如切片,Map等類(lèi)型.
關(guān)于JS實(shí)例更多處理可以查看后續(xù)的PhalGo-Json或者是查看源代碼
有的童鞋會(huì)問(wèn)如果我獲取的是Int類(lèi)型但是參數(shù)傳遞的是中文字符要怎么處理呢,或者說(shuō)是這個(gè)參數(shù)必須傳遞需要自己驗(yàn)證嗎,這些問(wèn)題都留到下一節(jié)的參數(shù)驗(yàn)證過(guò)濾來(lái)給大家解答.
如果大家對(duì)PhalGo有好的想法或者是有好的意見(jiàn)隨時(shí)可以聯(lián)系我!
更多建議: