PhalGo-Request
2016-06-29 14:17
253 查看
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有好的想法或者是有好的意见随时可以联系我!
相关文章推荐
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- php错误提示failed to open stream: HTTP request failed!的完美解决方法
- 小论asp中request与response的用法
- 循环取值Request.QueryString的用法
- Jquery中request和request.form和request.querystring的区别
- request.getParameter()取值为null的解决方法
- Asp.net内置对象之Request对象(概述及应用)
- 通过过滤器(Filter)解决JSP的Post和Request中文乱码问题
- asp下request.querystring("id")与request("id")区别
- 关于request.getHeader("Referer")的问题探讨
- Golang实现的聊天程序服务端和客户端代码分享
- asp.net Request.ServerVariables[] 读解
- Request.UrlReferrer使用详解
- java中request对象各种方法的使用实例分析
- YII Framework学习之request与response用法(基于CHttpRequest响应)
- Node.js中Request模块处理HTTP协议请求的基本使用教程
- Golang学习笔记(三):控制流
- Golang学习笔记(二):类型、变量、常量
- Golang中的sync.WaitGroup用法实例