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()

PhalGo-Echo路由相关推荐

  1. pgsql 运行状态 采集脚本

    脚本来自德哥的github地址,https://github.com/digoal/pgsql_admin_script/blob/master/generate_report.sh 内容如下: #! ...

  2. thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询

    文章目录 一.API友好 1.举两个thinkphp5关于API友好的例子 (1)数据输出 (2)错误调试Trace 二.获取请求信息(Request) 1.获取URL信息 2.获取 模块/控制器/操 ...

  3. 【Freeswitch从入门到精通】二、初识Freeswitch

    [Freeswitch从入门到精通]二.初识Freeswitch 1.入门术语 1.1 常见短语 1.2 Call Legs 2.历史 3.启动 4.dialplan 路由表 4.1 测试Demo路由 ...

  4. 07 目标: 站在巨人肩膀,你的理想框架到底长什么样?

    理想框架到底是什么样子的?这个终极问题,闭门造车是无法得到答案的,所以今天,我想让你先从埋头搭建 Web 框架的视角中暂时跳出来,站在更高的角度来纵观全局. 开源框架怎么比较 有如下几个参数: 标准 ...

  5. linux怎么使用ksh执行脚本,执行shell脚本遇到 ksh not found的问题

    今天执行脚本aix_xunjian.sh的时候遇到问题 [dacp1][/export/home]#ls -l total 72 -rwxr-xr-x1 rootsys2372 Feb 22 09:1 ...

  6. tp5框架原理详解_tp5框架知识点

    项目包含的关键点,后台,前台. 入口文件. 通用配置文件. 数据库配置文件. 共有文件,css,images,js. 控制器,模型,视图. 共有类. 共有函数. 属性,方法. 命名规范. 命名空间. ...

  7. php 依赖注入框架,通过实现依赖注入和路由,构建一个自己的现代化PHP框架

    如何提高自己编写代码的能力呢?我们首先想到的是阅读学习优秀的开源项目,然后写一个自己的web框架或类库组件.作为web开发者,我们通常都是基于面向对象OOP来开发的,所以面向对象的设计能力或者说设计模 ...

  8. linux下添加路由的方法

    Linux中增加软路由的两种方法 第一种: route add -net 172.16.6.0 netmask 255.255.255.0 gw 172.16.2.254 dev eth0 /* 增加 ...

  9. H3C静态路由、Track与BFD联动配置举例

    1. 组网需求 Switch A.Switch B和Switch C连接了20.1.1.0/24和30.1.1.0/24两个网段,在交换机上配置静态路由以实现两个网段的互通,并配置路由备份以提高网络的 ...

  10. 网络系统管理之静态路由配置

    下面,我们主要讨论一下网络系统管理中静态路由配置的问题.公司用的服务器种类繁多,有FreeBSD8.1-64bit.windows2003_R2-64bit和cetnos5.5-64bit,而规划的网 ...

最新文章

  1. vmware workstation 下安装ubuntu
  2. Java提高班(六)反射和动态代理(JDK Proxy和Cglib)
  3. VS2017桌面应用程序打包成.msi或者.exe
  4. Android基本程序单元Activity总结
  5. Java Spring源代码学习之How is class annotation evaluated by Spring framework
  6. IntelliJ IDEA里对Lombok插件的配置步骤
  7. Linux bond6配置文件,Linux服务器网卡绑定bond配置(示例代码)
  8. oracle 插入含字符串
  9. 使用zerorpc踩的第一个坑:
  10. 苹果手机数据线充不了电_手机充电器充不了电?其实4招就能解决
  11. SAS︱数据索引、数据集常用操作(set、where、merge、append)
  12. FireFox2和FireFox3共存解决方案(附完整图解)
  13. JDK8下载安装教程
  14. 在苹果Mac上如何恢复已删除的用户?
  15. 9大日常不良习惯致癌
  16. kali中使用Docker搭建vulhub靶场和vulapps靶场(新手向)
  17. word标尺灰色_如何在Microsoft Word中使用标尺
  18. 汽车零部件ELV测试标准
  19. Java实现 LeetCode 520 检测大写字母
  20. php抓取图片curl,php获取远程图片的两种 CURL方式和sockets方式获取远程图片

热门文章

  1. pycharm设置工程运行环境
  2. 知识点收录01---关于Tomcat的一些知识点
  3. OpenCV-Python教程(6、Sobel算子)
  4. opengl es坐标变换理解1
  5. 【2019 BAPC - D】Deck Randomisation【中国剩余定理 + 循环节】
  6. 高斯整数、高斯素数、费马平方和定理
  7. 【博弈找规律问题汇总】
  8. 通俗有趣讲解Atomic原子类的实现原理
  9. 最简单解决jpa自动生成表后字段乱序问题
  10. 2014年5月第二个周末总结--保守自己的心