当前位置:   article > 正文

Go语言学习--Gin框架之Hello World

Go语言学习--Gin框架之Hello World

Go语言学习–Gin框架之Hello World

1. 简介

  • Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin。

    以下是Gin框架的一些主要特点和功能:

    1. 快速:基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。。
    2. 支持中间件:传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。
    3. Crash处理:Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!
    4. JSON验证:Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
    5. 路由组:更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
    6. 错误管理:Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
    7. 内置渲染:Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
    8. 可扩展性:新建一个中间件非常简单。

2. 下载gin框架

# 通过 go 直接下载gin框架
$ go get -u github.com/gin-gonic/gin
go: downloading golang.org/x/net v0.22.0
go: downloading github.com/go-playground/validator/v10 v10.19.0
go: downloading github.com/pelletier/go-toml/v2 v2.2.0
go: downloading github.com/go-playground/validator v9.31.0+incompatible
go: downloading github.com/pelletier/go-toml v1.9.5
go: downloading github.com/ugorji/go/codec v1.2.12
go: downloading github.com/ugorji/go v1.2.12
go: downloading google.golang.org/protobuf v1.33.0
go: downloading github.com/bytedance/sonic v1.11.3
go: downloading golang.org/x/sys v0.18.0
go: downloading github.com/gabriel-vasile/mimetype v1.4.3
go: downloading github.com/leodido/go-urn v1.4.0
go: downloading golang.org/x/crypto v0.21.0
go: downloading golang.org/x/text v0.14.0
go: downloading github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d
go: downloading golang.org/x/arch v0.7.0
go: downloading github.com/klauspost/cpuid/v2 v2.2.7
go: downloading github.com/chenzhuoyu/iasm v0.9.0
go: downloading github.com/chenzhuoyu/iasm v0.9.1
go: downloading github.com/stretchr/testify v1.9.0
go: upgraded github.com/bytedance/sonic v1.9.1 => v1.11.3
go: upgraded github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 => v0.0.0-20230717121745-296ad89f973d
go: added github.com/chenzhuoyu/iasm v0.9.1
go: upgraded github.com/gabriel-vasile/mimetype v1.4.2 => v1.4.3
go: upgraded github.com/go-playground/validator/v10 v10.14.0 => v10.19.0
go: upgraded github.com/klauspost/cpuid/v2 v2.2.4 => v2.2.7
go: upgraded github.com/leodido/go-urn v1.2.4 => v1.4.0
go: upgraded github.com/mattn/go-isatty v0.0.19 => v0.0.20
go: upgraded github.com/pelletier/go-toml/v2 v2.0.8 => v2.2.0
go: upgraded github.com/ugorji/go/codec v1.2.11 => v1.2.12
go: upgraded golang.org/x/arch v0.3.0 => v0.7.0
go: upgraded golang.org/x/crypto v0.9.0 => v0.21.0
go: upgraded golang.org/x/net v0.10.0 => v0.22.0
go: upgraded golang.org/x/sys v0.8.0 => v0.18.0
go: upgraded golang.org/x/text v0.9.0 => v0.14.0
go: upgraded google.golang.org/protobuf v1.30.0 => v1.33.0

# 如果下载不下来,可以考虑使用国内代理: https://goproxy.io/zh/
# 建议收藏该网址

# 里面的内容大致如下:
### Linux 或者 Mac系统使用下面
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io,direct
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
export GOPRIVATE=git.mycompany.com,github.com/my/private
###

### Windows 的配置如下:
# 配置 GOPROXY 环境变量
$env:GOPROXY = "https://goproxy.io,direct"
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"
###
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

3. 开始HelloWorld

  • 在开发工具中好代码,以Goland为例
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	// GET:请求方式;/helloworld:请求的路径
	// 当客户端以GET方法请求/helloworld路径时,会执行后面的匿名函数
	r.GET("/helloworld", func(c *gin.Context) {
		c.String(http.StatusOK, "Hello World")
	})
	// 启动HTTP服务,监听本机的8080端口
	r.Run(":8080")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 运行程序
# 运行刚刚写的程序
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery m
iddleware already attached.

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /helloworld               --> main.main.func1 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8080
# 这边会卡在这边
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 访问
# 访问方式: 
# 本地浏览器访问
http://127.0.0.1:8080/helloworld
  • 1
  • 2
  • 3
  • 访问结果
# 浏览器中展示结果
Hello World

# console新增信息
[GIN] 2024/03/21 - 11:03:39 | 200 |            0s |       127.0.0.1 | GET      "/helloworld"
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/291382
推荐阅读
相关标签
  

闽ICP备14008679号