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语言与技术原理。
    关注我

  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/pingyeaa/p/12643270.html
Copyright © 2011-2022 走看看