zoukankan      html  css  js  c++  java
  • 【Golang】Golang轻量级框架Gin

    简介

      Gin是一款轻量级golang框架,他在Go web开发中使用率是很高的。

     Gin框架特点

      1. 使用简单。

      2. 并发高。

      3. 内存占用少。

        下图是各个web框架压测对比,吞吐量越高越好。

      

    Gin框架安装

      安装要求:go版本大于等于1.12(使用go Module)

       下面开始安装

      

    #创建项目目录
    mkdir
    -p /Users/songguojun/Documents/code/gopath/src/github.com/songguojun/ginProject #进入上面创建的目录 cd /Users/songguojun/Documents/code/gopath/src/github.com/songguojun/ginProject #初始化 go mod init ginProject #下载gin代码 go get -v github.com/gin-gonic/gin@v1.4

    ginProject目录下在创建目录start,然后进入start目录新建文件main.go

    package main
    
    import (
       "github.com/gin-gonic/gin"
    )
    
    func main() {
      //创建路由 r
    := gin.Default() //绑定路由及执行函数 gin.Context封装了HTTP协议中的请求信息和响应信息 r.GET("/index", func(c *gin.Context) { c.JSON(200, gin.H{ "message" : "hello Gin", }) }) r.Run() //启动服务 默认监听端口8080 }

    运行

     然后浏览器访问http://127.0.0.1:8080/index  输出{"message":"hello Gin"},说明运行成功。

    请求路由

       Gin框架中采用的路由库是httprouter,地址是 https://github.com/julienschmidt/httprouter

      

      1. 多种请求类型。  

    package main
      
    import (
       "github.com/gin-gonic/gin"
    )
    
    func main() {
       r := gin.Default()
       //设置路由
       r.GET("/get", func(c *gin.Context) {
            c.String(200, "get")
       })
       r.POST("/post", func(c *gin.Context) {
            c.String(200, "post")
       })
       r.Handle("DELETE", "/delete", func(c *gin.Context) {
            c.String(200, "delete")
       })
       r.Any("/any", func(c *gin.Context) {   //支持8种请求类型
            c.String(200, "any")
       })
       r.Run() //启动服务 默认端口8080
    }

       通过 curl -X GET "http://127.00.1:8080/get" 测试。

      2. 绑定静态文件夹。

      3. 参数作为URL。

      4. 泛绑定。

    中间件

      gin.Default()方法里面就已经实现了两个中间件Logger和Recovery。

  • 相关阅读:
    jenkins1—docker快速搭建jenkins环境
    UPC-6616 Small Multiple(BFS广搜&双向队列)
    UPC-5502 打地鼠游戏(贪心&优先队列)
    UPC-5500 经营与开发(贪心&逆推)
    NBUT
    UPC-6690 Transit Tree Path(树上最短路径SPFA)
    UPC-6359 售票(字典树)
    UPC-6358 庭师的利刃(两数与运算最大值)
    HDU-6308 Time Zone(时区转换)
    欧拉函数模板及拓展
  • 原文地址:https://www.cnblogs.com/songgj/p/9136092.html
Copyright © 2011-2022 走看看