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%内容,订阅专栏后可继续查看/也可单篇购买

go高薪必备:面试框架17讲 文章被收录于专栏

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

全部评论

相关推荐

02-13 15:16
三江学院 运营
据说名字越长别人越关注你的昵称我觉得我要被关注了:完全看不出你到底干了什么 全是车轱辘话
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务