gin 框架介绍及基本使用
gin 框架介绍及基本使用
介绍
gin
是一个基于golang
标准net
库实现的的web
框架,现在已经被广泛使用,github
上非常活跃,是最流行的golang web
框架之一。具体数据对比可以在https://github.com/mingrammer/go-web-framework-stars 查看,gin
目前stars
高居第一,github
地址:gin。
gin
框架和beego
框架不一样的是它是一个微框架,但重要和必须的功能都提供了,并且它的源代码也是非常简洁的,十分适合用来学习。
gin
的特性包括:
- 快:路由使用
基数树
,低内存,不使用反射; - 中间件注册:一个请求可以被一系列的中间件和最后的
action
处理 - 崩溃处理:gin可以捕获panic使应用程序可用
- JSON校验:将请求的数据转换为JSON并校验
- 路由组:更好的组织路由的方式,无限制嵌套而不影响性能
- 错误管理:可以收集所有的错误
- 内建渲染方式:JSON,XML和HTML渲染方式
- 可继承:简单的去创建中间件
gin
的基本使用
一个来自于gin github example
的最基本使用demo
:
package main import ( "net/http" "github.com/gin-gonic/gin" ) var db = make(map[string]string) func setupRouter() *gin.Engine { // gin.Default 获取一个默认gin engine r := gin.Default() // 注册ping 路由handler,响应pong r.GET("/ping", func(c *gin.Context) { c.String(http.StatusOK, "pong") }) // 通过gin Context 来获取参数然后响应 r.GET("/user/:name", func(c *gin.Context) { user := c.Params.ByName("name") value, ok := db[user] if ok { c.JSON(http.StatusOK, gin.H{"user": user, "value": value}) } else { c.JSON(http.StatusOK, gin.H{"user": user, "status": "no value"}) } }) // 路由分组 authorized := r.Group("/", gin.BasicAuth(gin.Accounts{ "foo": "bar", // user:foo password:bar "manu": "123", // user:manu password:123 })) authorized.POST("admin", func(c *gin.Context) { user := c
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> <span style="font-size:14px;">本专刊是Go开源项目源码分析专栏,共 17 篇文章,挑选了Go 开源界知名的 4 个开源项目gnet(高效的网络库)、gin(知名的Go微型web框架)、fasthttp(高性能web框架)、nsq(Go消息队列)来对它们进行源码分析,分析它们的设计思想和代码实现。每个项目的讲解都是由浅入深,由设计思想的剖析到源码实现的分析,更易于读者理解。</span> </p> <p> <br /> </p> <h2> <b><span style="font-size:16px;line-height:1;">购买须知:</span></b> </h2> <span style="font-size:14px;">订阅成功后,用户即可通过牛客网 PC 端、App 端享有永久阅读的权限;</span><br /> <span style="font-size:14px;">牛客专刊为虚拟内容服务,订阅成功后概不退款;</span><br /> <span style="font-size:14px;line-height:1;">在专刊阅</span><span style="font-size:14px;line-height:1;">读过程中,如有任何问题,可在文章评论区底部留言,或添加牛客导师,加入读者交流群;</span><br /> <span style="font-size:14px;">想成为牛客作者,请邮件联系yinxiaoxiao@nowcoder.com,邮件主题【牛客作者+写作方向】,并附上个人简历一份及近期作品一份;</span><br /> <p> <span style="font-size:14px;">牛客专刊版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任</span><span style="font-size:14px;">。</span> </p> <p> <br /> </p>