zoukankan      html  css  js  c++  java
  • Gin框架系列01:极速上手

    Gin是什么?

    Gin是Go语言编写的web框架,具备中间件、崩溃处理、JSON验证、内置渲染等多种功能。

    准备工作

    本系列演示所有代码都在Github中,感兴趣的同学可以自行查阅,欢迎大家一起完善。

    https://github.com/pingyeaa/golang-examples/tree/master/gin
    

    没有安装配置Go语言环境的同学请先自行安装,这里不再赘述。首先,我们来创建工作目录gin

    mkdir gin && cd gin
    

    然后用go mod命令初始化项目,go mod是Go语言的包管理工具,官方推荐使用,有了它就不再受GOPATH的限制,可以在任何目录初始化项目。

    go mod init gin
    

    接下来安装gin库。

    go get -u github.com/gin-gonic/gin
    

    创建演示代码的入口文件main.go,当前项目结构大致如下。

    .
    ├── go.mod
    ├── go.sum
    └── main.go
    

    编写代码

    工作准备就绪之后,来开始今天的代码编写,以经典代码hello word为例。

    实例化一个gin对象

    r := gin.Default()
    

    Default方法的主要作用是实例化一个带有日志、故障恢复中间件的引擎。

    func Default() *Engine {
    	debugPrintWARNINGDefault()
    	engine := New()
    	engine.Use(Logger(), Recovery())
    	return engine
    }
    

    定义请求

    定义一个GET请求的路由,参数一是路由地址,也就是在浏览器访问的相对路径,参数二是一个匿名函数,函数内部用于业务逻辑处理。

    r.GET("/hello", func(c *gin.Context) {
    
    })
    

    我们就在函数内调用JSON方法返回数据。JSON的操作非常简单,参数一是状态码,参数二是JSON的内容。

    r.GET("/hello", func(c *gin.Context) {
      c.JSON(200, gin.H{
        "msg": "Hello world!",
      })
    })
    

    JSON内容可以通过gin提供的H方法来构建,非常方便。

    // H is a shortcut for map[string]interface{}
    type H map[string]interface{}
    

    运行

    Run方法最终会调用内置http库的ListenAndServe方法来监听端口,如果不传参数默认监听80端口,也可以通过参数来变更地址和端口。

    r.Run(":8081")
    

    测试

    在浏览器访问localhost:8081,如果看到如下提示即成功。

    file

    完整代码

    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{
    			"msg": "Hello world!",
    		})
    	})
    	r.Run(":8081")
    }
    

    Go语言库代码示例,欢迎star
    https://github.com/pingyeaa/golang-examples

    感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
    关注我

  • 相关阅读:
    Opencv 图片边缘检测和最小外接矩形
    python matplotlib包图像配色方案
    python matplotlib 绘图 和 dpi对应关系
    python 工具 二进制文件处理之——去掉指定长度数据包头
    python 工具 二进制文件处理之——大小端变换
    Prime Path(POJ 3126 BFS)
    Travel(HDU 5441 2015长春区域赛 带权并查集)
    树上战争(HDU 2545 并查集求解点到根节点长度)
    More is better(hdu 1856 计算并查集集合中元素个数最多的集合)
    How Many Tables(POJ 1213 求连通分量)
  • 原文地址:https://www.cnblogs.com/pingyeaa/p/12643270.html
Copyright © 2011-2022 走看看