加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

Golang六款优越Web框架比拟

发布时间:2019-10-15 06:06:31 所属栏目:移动互联 来源:云时代的运维开发
导读:Golang是一门快速增添的说话,专为构建简朴、快速且靠得住的软件而计划。它提供的net/http库对付HTTP协议实现很是好,基于此再结构框架会更轻易,因今生态中呈现了许多框架。本文将从风行度、社区支持及内建成果等角度对六款知名Go说话Web框架做比拟。 六款W
副问题[/!--empirenews.page--]

Golang是一门快速增添的说话,专为构建简朴、快速且靠得住的软件而计划。它提供的net/http库对付HTTP协议实现很是好,基于此再结构框架会更轻易,因今生态中呈现了许多框架。本文将从风行度、社区支持及内建成果等角度对六款知名Go说话Web框架做比拟。

六款Web框架

Beego 面向Go编程说话的开源高机能web框架

  • https://github.com/astaxie/beego
  • https://beego.me

Buffalo 行使Go说话快速构建Web应用

  • https://github.com/gobuffalo/buffalo
  • https://gobuffalo.io

Echo 高机能、极简Go说话Web框架

  • https://github.com/labstack/echo
  • https://echo.labstack.com

Gin Go说话编写的HTTP Web框架,它以更好的机能实现了相同Martini的API,机能更好

  • https://github.com/gin-gonic/gin
  • https://gin-gonic.github.io/gin

Iris 全宇宙最快的Go说话Web框架,完整MVC支持,拥抱将来

  • https://github.com/kataras/iris
  • https://iris-go.com

Revel Go说话的高效、全栈Web框架

  • https://github.com/revel/revel
  • https://revel.github.io
风行度 Golang(五)最佳Web框架比拟 进修曲线 Golang(五)最佳Web框架比拟

astaxie 和 kataras 别离为 Beego 和 Iris 清算了很多例子供开拓者参考进修

焦点成果

Golang(五)最佳Web框架比拟

Web框架焦点成果比拟

几个知名的Go说话Web框架(Echo、Gin和Buffalo)因为没有完整支持全部成果,并不能算是真正意义上的Web框架,但大部门go社区以为它们是的,因此,有须要将这几个框架也列在表格中可以和Iris、Beego、Revel做较量。以上这些框架,除了Beego和Revel之外,都可以适配恣意net/http中间件,个中一部门框架可以轻松地做适配,其它一些也许就必要特另外全力

词汇理会

路由: 定名参数和通配符 支持注册动态路径

定名路径参数示例

  1. // 路径参数 username 取值别离是 me,speedwheel 
  2.  "/user/{username}" 匹配到 "/user/me", "/user/speedwheel" 等等 

通配符示例

  1. // 路径参数 path 对应的别离是 /user/some/path/here 和 /user/this/is/a/dynamic/multi/level/path 
  2.  "/user/{path *wildcard}" 匹配到 
  3.  "/user/some/path/here", 
  4.  "/user/this/is/a/dynamic/multi/level/path" 等等 

Iris也支持一个叫micros的成果,它可以被暗示为 /user/{username: string} 或 /user/{username: int min(1)}

路由: 正则表达式 支持过滤动态路径

  1. "/user/{id ^[0-9]$}" 匹配到 "/user/42" 但不会匹配 "/user/somestring" 

路由: 分组 通过共用逻辑或中间件来处理赏罚有配合前缀的路径组

  1. myGroup := Group("/user", userAuthenticationMiddleware) 
  2. myGroup.Handle("GET", "/", userHandler) 
  3. myGroup.Handle("GET", "/profile", userProfileHandler) 
  4. myGroup.Handle("GET", "/signup", getUserSignupForm) 
  • /user
  • /user/profile
  • /user/signup

可以闯辗书中再建设壮辗书

  1. myGroup.Group("/messages", optionalUserMessagesMiddleware) 
  2.  myGroup.Handle("GET', "/{id}", getMessageByID) 
  • /user/messages/{id}

路由: 以上全部法则相团结而不发生斗嘴 这是一个高级且有效的成果,今朝在Go说话框架方面只有Iris能支持这一成果。这意味着相同如 /{path wildcard}, /user/{username}和/user/static以及/user/{path wildcard}等路径都可以在统一个路由中通过静态路径/user/static或通配符/user/{path *wildcard}来正确匹配

路由: 自界说HTTP非常 指可以自行处理赏罚哀求错误的环境。HTTP的错误状态码>=400,譬喻,哀求的资源不存在 NotFound 404

  1. OnErrorCode(404, myNotFoundHandler) 

上述大大都Web框架只支持404,405及500错误状态的处理赏罚,Iris可以或许支持恣意错误,Beego和Revel也能支持完整的HTTP错误状态码

100%兼容net/http包 这意味着

  • 这些框架可以或许直接会见 *http.Request 和 http.ResponseWriter 的上下文信息
  • 一种将net/http handler转换为特定框架范例handler的要领

中间件生态体系 框架会为你提供一个完备的引擎来界说流程、全局、单个或一组路由,而不必要本身用差异的中间件来封装每一部门的handlers

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读