codecamp

PhalGo-Request

PhalGo-Request

PhalGo-Request对Echo进行了封装,目的是为了减少获取请求参数,转换类型,判断请求参数有效此类重复操作带来的代码量,PhalGo-Request支持Get,Post,Json三类请求参数,并且使用连贯操作来获取API需要的参数减少重复代码量,.

Request初始化

PhalGo是灵活的你可以使用PhalGo-Request也可以使用Echo原生的参数获取(在使用restful风格的情况需要使用Echo原生获取方式),如果使用PhalGo-Request需要在接口内部进行初始化方可使用:

return func(c echo.Context) error {
    Request := phalgo.NewRequest(c)
}

获取Get和Post参数

参数两种传递方式想必不用多说大家都之道就是GET和POST方式,我们可以通过以下方式来获取GET或POST请求参数:

//获取get请求参数,接受string类型
id := Request.GetParam("id").GetString()
//获取post参数,接受string类型   
id := Request.PostParam("id").GetString()

当然如果你不想区分get和post参数可以这样使用,优先级GET->POST

id := Request.Param("id").GetString()

在获取请求的时候在最后一步需要指定你获取请求参数的类型,PhalGo-Request现支持三种类型的获取,String,Int,Float帮助你更加方便的处理参数类型不需要自己进行类型转换多余的操作,使用方法分别如下:

id := Request.PostParam("id").GetString()
id := Request.PostParam("id").GetInt()
id := Request.PostParam("id").GetFloat()

处理Json参数

说道请求处理还有一个不得不说的请求类型那就是Json,我们在很多复杂的业务情况下接口需要接受一个列表?那当然会是一个json对象,比如说我们要对请求参数进行加密,我们通常会把所有的请求参数放到一个json中进行加密然后传递过来解密之后使用,所以json在请求参数处理中是必不可少的,PhalGo-Request也是意识到了这一点对json处理进行了封装,我们来看一下最简单的从请求参数中来获取json参数的一个小例子:

//通过get请求获取params的json字符串
params := Request.GetParam("params").GetString()
//注入Json字符串 
Request.SetJson(params)
//通过JsonParam和GetJsonString来获取想要的参数想要的类型
id := Request.JsonParam("user.id").GetString()

我们在获取Json参数时需要使用JsonParam函数JsonParam接受一个字符串,字符串通过"."隔开代表了获取json的层级关系,为了更好的说明有入下一个例子:

json := `{
    "userlist": {
        "miaomi": {
            "username": "喵了个咪"
        }
    }
}`
Request.SetJson(json)
//这样就能获取到字符串"喵了个咪"
Request.JsonParam("userlist.miaom.usernamei").GetString()

Json也同样支持String,Int,Float类型 ,除此之外Json类型还多一个类型那就是json类型GetJson方法,GetJson会返回一个JS实例,我们可以通过JS实例来获取更多的类型比如切片,Map等类型.

关于JS实例更多处理可以查看后续的PhalGo-Json或者是查看源代码

小结

有的童鞋会问如果我获取的是Int类型但是参数传递的是中文字符要怎么处理呢,或者说是这个参数必须传递需要自己验证吗,这些问题都留到下一节的参数验证过滤来给大家解答.

如果大家对PhalGo有好的想法或者是有好的意见随时可以联系我!

PhalGo-Echo路由
PhalGo-参数验证过滤
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }