PhalGo-Echo路由

PhalGo-Echo路由

Echo官网地址:https://labstack.com/echo

Echo是PhalGo最核心的组件,负责了整体的请求路由返回等功能,并且Echo支持HTTP2协议以及HTTPS协议

为什么选择Echo

在初期笔者考虑过Echo,gin以及beego来尝试实现自己的项目,最终还是选择了使用Echo来作为PhalGo的主要路由框架

让我决定的因素是应为Echo支持使用fasthttp所以在效率上面基本其他框架没法比(笔者是个性能狗),我们可以看一下Echo官方的性能图

机器配置:

  • Go 1.6
  • wrk 4.0.0
  • 2 GB, 2 Core

gin相对来说更人性化一些beego相对更简单易用一些感兴趣的可以尝试一下

注册路由

在PhalGo中所有的组件需要使用都需要在入口进行注册

//初始化ECHO路由
phalgo.NewEcho()

然后就可以注册我们的路由了,建议在项目建立一个routes目录中存放路由go文件然后在入口文件中引入

// Routes 载入路由
routes.GetRoutes()

Echo支持restful标准

phalgo.Echo.Get()    //接受Get请求
phalgo.Echo.Post()   //接受Post请求
phalgo.Echo.Delete() //接受Delete请求
phalgo.Echo.Put()    //接受Put请求
phalgo.Echo.Any()    //接受所有请求方式

以上所有方式都需要接受两个参数,第一个是请求的路径比如填入"/test/:id",就需要使用localhost/test/5这种方式请求,第二个参数必须是一个方法func(Context) error例子如下

func hello(c echo.Context) error {
    return c.String(http.StatusOK, "Hello, World!")
}

//接收Get请求
e.GET("/test/:id",hello)

开启服务

开启服务有两种方式一种是默认的Standard方式一种是Fasthttp,看过上面的对比图也应该之道Fasthttp有多强了把,我们可以在入口文件最后加入如下语句开启服务

//使用Fasthttp方式
phalgo.RunFasthttp(":1333")
//使用Standard方式
phalgo.RunStandard(":1333")

这样就可以运行一个http服务了

中间件middleware

Echo有很多好用的中间件,笔者在这里进行了封装,这里简单提及几个以及他们的功能,使用方式只需要在开启服务之前初始化即可

1.Recover

使用Recover会打印出打印请求异常信息

phalgo.Recover()

比如访问一个未注册路由的地址,页面上会打印Not Found,终端上会打印如下语句:

{"time":"2016-05-24T17:02:12+08:00","level":"ERROR","prefix":"echo","file":"echo.go","line":"226","message":"Not Found"}

2.Logger

使用Logger会打印出所有的请求明细,请求IP请求方式,请求花费时间请求地址,请求httpcode等等,方便调试

请求成功:

{"time":"2016-05-24T17:02:12+08:00","remote_ip":"101.81.5.247","method":"GET","uri":"/","status":200, "latency":194,"latency_human":"194.251µs","rx_bytes":0,"tx_bytes":76}

请求失败:

{"time":"2016-05-24T17:02:10+08:00","remote_ip":"101.81.5.247","method":"GET","uri":"/s","status":404, "latency":79,"latency_human":"79.126µs","rx_bytes":0,"tx_bytes":9}

3.Gzip压缩

在很多时候我们需要开启Gzip压缩来减少返回数据的大小来节约流量可以通过以下方式设置:

phalgo.Gzip()

4.末尾斜杠处理

在匹配路由的时候有一个问题比如我们定义了一个路由是/test我们通过localhost/test/是请求不到应为末尾多了一个斜杠,这个时候就可以通过中间件的末尾斜杠处理来添加末尾斜杠或者是删除末尾斜杠

//自动添加末尾斜杠
phalgo.AddTrailingSlash()
//自动删除末尾斜杠
phalgo.RemoveTrailingSlash()
时间: 2024-11-08 17:30:34

PhalGo-Echo路由的相关文章

PhalGo-介绍

PhalGo-介绍 phalgo是一个Go语言的一体化开发框架,主要用于API开发应为使用ECHO框架作为http服务web程序一样可以使用,牛顿曾经说过"如果我比别人看得远,那是因为我站在巨人的肩膀上",既然Golang有那么多优秀的组件为什么还要重复造轮子呢?所以就有了一个把一些优秀组件整合起来降低开发成本的想法,整合了比较好的组件比如echo,gorm,viper等等 phalgo名字的由来 phalgo是对phalapi和phalcon的致敬,吸取了一些好的思想,应为是使用go

Laravel5做权限管理

关于权限管理的思考 最近用laravel设计后台,后台需要有个权限管理.权限管理实质上分为两个部分,首先是认证,然后是权限.认证部分非常好做,就是管理员登录,记录session.这个laravel中也有自带Auth来实现这个.最麻烦就是权限认证. 权限认证本质上就是谁有权限管理什么东西.这里有两个方面的维度,谁,就是用户维度,在用户维度,权限管理的粒度可以是用户一个人,也可以是将用户分组,如果将用户分组,则涉及到的逻辑是一个用户可以在多个组里面吗?在另外一方面,管理什么东西,这个东西是物的维度,

Win7下共享网络连接至WLAN的批处理

  把以下代码复制到记事本,选择另存为,把文件类型选择为所有文件,文件名命名为以bat为后缀的文件(***.bat). 必须以管理员身份运行! 开启网络共享的方法: 还不行就改ip试试: 代码部分: @echo off :head cls echo. echo ------------------------------------------------------------------------------- echo仅win7可用,请以管理员身份运行,未以管理员身份运行请退出重新以管理

Laravel5权限管理方法详解_php实例

本文实例讲述了Laravel5权限管理的实现方法.分享给大家供大家参考,具体如下: 关于权限管理的思考 最近用laravel设计后台,后台需要有个权限管理.权限管理实质上分为两个部分,首先是认证,然后是权限.认证部分非常好做,就是管理员登录,记录session.这个laravel中也有自带Auth来实现这个.最麻烦就是权限认证. 权限认证本质上就是谁有权限管理什么东西.这里有两个方面的维度,谁,就是用户维度,在用户维度,权限管理的粒度可以是用户一个人,也可以是将用户分组,如果将用户分组,则涉及到

Laravel5权限管理方法详解

本文实例讲述了Laravel5权限管理的实现方法.分享给大家供大家参考,具体如下: 关于权限管理的思考 最近用laravel设计后台,后台需要有个权限管理.权限管理实质上分为两个部分,首先是认证,然后是权限.认证部分非常好做,就是管理员登录,记录session.这个laravel中也有自带Auth来实现这个.最麻烦就是权限认证. 权限认证本质上就是谁有权限管理什么东西.这里有两个方面的维度,谁,就是用户维度,在用户维度,权限管理的粒度可以是用户一个人,也可以是将用户分组,如果将用户分组,则涉及到

PHP中的自定义路由使用小结

简介 我手上有个用PHP写的网站,类似于个人测试性质的站点,我独立设计,在这过程中犯了所有可能的设计和编程上的错误,同时我也收获了很多,这也促使 我去学习PHP和MySQL.每当我学习新的技术或web实践时,都会想到我的网站会从中得益.正如你可以想象到的,它的可读性不强.测试网站往往在代码 可读性和可维护性方面表现糟糕,尤其当你仅仅因为某些必要的功能而学习一门编程语言时,而这也正是我一直以来学习PHP的方式. 自从了解了ASP.NET MVC,我便思考如何在这个网站上实践这套MVC模式.我喜欢这

COM+ Web 服务:通过复选框路由到 XML Web Services(1) (微软中国)

services|web|xml|复选框|微软 COM+ Web 服务:通过复选框路由到 XML Web Services John Noss 和 Jonathan HawkinsMicrosoft Corporation 2001年11月 摘要:COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活.本文通过几个示例介绍基本的互操作性.配置以及托管和非托管

COM+ Web 服务:通过复选框路由到 XML Web Services (转)

services|web|xml|复选框 COM+ Web 服务:通过复选框路由到 XML Web Services John Noss 和 Jonathan HawkinsMicrosoft Corporation 2001年11月 摘要:COM+ Web 服务新增了某些功能,可与 Microsoft .NET Remoting 集成,并通过 SOAP for COM+ 组件实现 XML Web Services 发布的复选框激活.本文通过几个示例介绍基本的互操作性.配置以及托管和非托管 CO

COM+ Web 服务:通过复选框路由到 XML Web Services(3) (微软中国)

services|web|xml|复选框|微软 SOAP 与 DCOM 的局限性和区别 .NET Remoting 的目的之一是提供丰富的分布式环境,使开发人员能够在此环境中对序列化协议(格式化程序)和网络协议(频道)进行组合与匹配..NET 框架 1.0 版本中的 COM+ Web 服务仅支持一种格式化程序 (SOAP) 和一种频道 (HTTP).这并不是说其他频道和格式化程序不能使用 ServicedComponents 或 COM+,而是说没有自动配置为这些备用频道和格式化程序提供客户端和