• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Go Web框架gin的入门教程
    POST TIME:2021-10-18 17:38

    目前,基于Go的web框架也可谓是百花齐放了,之所以选择 gin ,没其他原因,就只是因为其在github上的star数是最多的,而且仅仅从README看,其文档也是相当丰富的。

    安装gin

    直接使用 go get github.com/gin-gonic/gin 即可。

    官方README中提供了非常多的例子。例如最简单的实例代码:

    package main
    import "github.com/gin-gonic/gin"
    func main() {
     r := gin.Default()
     r.GET("/ping", func(c *gin.Context) {
     c.JSON(200, gin.H{
      "message": "pong",
     })
     })
     r.Run() // listen and serve on 0.0.0.0:8080
    }
    
    

    路由

    router := gin.Default() // 默认是带有Logger和Recovery中间件的
    router := gin.New() // 不带中间件的路由
    router.Use(gin.Logger()) // 可以使用这种方式来指明中间件
    router.GET("/test", MyMiddleware(), testEndpoint) // 也可以用这种方式给指定路由添加中间件
    router.GET("/someGet", getting) // 支持所有Restful的操作
    // 带参数的路由
    router.GET("/user/:name", func(c *gin.Context) {
     name := c.Param("name")
    })
    
    // 参数可选/通配符功能
    router.GET("/user/:name/*action", ...)
    
    // 路由分组
    v1 := router.Group("/v1")
    {
      v1.POST("/login", loginEndpoint)
      v1.POST("/submit", submitEndpoint)
    }
    v1.Use(AuthRequired()) {} // 路由分组单独指定中间件
    

    请求与响应

    请求

    // 获取路由参数,假设有路由为"/user/:name"
    c.Params.ByName("name")
    
    // 获取query参数
    c.Query("name")
    c.DefaultQuery("name", "Guest")
    
    // 获取表单参数
    c.PostForm("name")
    c.DefaultPostForm("name")
    

    参数绑定

    请求验证

    响应

    // 返回简单的字符串
    c.String(200, "pong")
    
    // 返回JSON数据
    c.JSON(200, gin.H{
      "message": "pong",
    })
    
    // 重定向
    c.Redirect(http.StatusMovedPermanently, "https://google.com")
    
    

    中间件

    自定义中间件

    BasicAuth中间件

    异步协程

    gin可以借助协程来实现异步任务,但是这时候得手动copy上下文,并且只能是可读取的。

    router.GET("/async", func(c *gin.Context) {
      cCp := c.Copy()
      go func() {
        time.Sleep(5 * time.Second)
        log.Println("Done! in path" + cCp.Request.URL.Path)
      }()
    })
    
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 使用Golang简单实现七牛图片处理API
    • Laravel框架执行原生SQL语句及使用paginate分页的方法
    • Flask框架Flask-Login用法分析
    • Python的Flask框架及Nginx实现静态文件访问限制功能
    • PHP框架Laravel插件Pagination实现自定义分页
    • 使用Nginx+uWsgi实现Python的Django框架站点动静分离
    • golang API开发过程的中的自动重启方式(基于gin框架)
    上一篇:浅谈go语言renderer包代码分析
    下一篇:golang中的net/rpc包使用概述(小结)
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信