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.Requser{Context: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").GetJsonString()

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

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

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

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

小结

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

ASP.NET Core的路由[5]:内联路由约束的检验

当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对...

3845
来自专栏GreenLeaves

WCF系列教程之WCF实例化

本文参考自http://www.cnblogs.com/wangweimutou/p/4517951.html,纯属读书笔记,加深记忆 一、理解WCF实例化机制...

20810
来自专栏DOTNET

ASP.NET Web API编程——控制器

1控制器操作的参数 控制器操作的参数可以是内置类型也可以是自定义类型,无参也是允许的。 2控制器操作返回值 类型 说明 void ...

3455
来自专栏python学习路

五、常用模块

模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 conf...

3148
来自专栏分布式系统和大数据处理

.Net Remoting(应用程序域) - Part.1

在互联网日渐普及,网络传输速度不断提高的情况下,分布式的应用程序是软件开发的一个重要方向。在.Net中,我们可以通过Web Service 或者Remoting...

992
来自专栏小樱的经验随笔

新人入坑Redis必会的吐血总结

Redis是一个使用C语言开发的开源的高性能的key-value存储系统,我们可以把它近似理解为Java Map。简单来讲,Redis是一种NOSQL内存数据库...

1.2K2
来自专栏PHP在线

9个必须掌握的实用PHP函数和功能

即使使用 PHP 多年,也会偶然发现一些未曾了解的函数和功能。其中有些是非常有用的,但没有得到充分利用。并不是所有人都会从头到尾一页一页地阅读手册和函数参考! ...

3188
来自专栏康怀帅的专栏

Redis key 操作详解

set key value del key # 删除键,后边可以跟多个值,用空格分开 exists key # key 是否存在,存在返回 1 ,...

3245
来自专栏大内老A

ASP.NET Core真实管道详解[1]:中间件是个什么东西?

ASP.NET Core管道虽然在结构组成上显得非常简单,但是在具体实现上却涉及到太多的对象,所以我们在 《ASP.NET Core管道深度剖析[共4篇]》 中...

20810
来自专栏大内老A

ASP.NET MVC下的异步Action的定义和执行原理

Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controll...

2595

扫码关注云+社区

领取腾讯云代金券