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

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

文章目录

  • [Go语言学习--Gin框架之Hello World](#Go语言学习--Gin框架之Hello World)
    • [1. 简介](#1. 简介)
    • [2. 下载gin框架](#2. 下载gin框架)
    • [3. 开始HelloWorld](#3. 开始HelloWorld)

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框架

shell 复制代码
# 通过 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"
###

3. 开始HelloWorld

  • 在开发工具中好代码,以Goland为例
shell 复制代码
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")
}
  • 运行程序
shell 复制代码
# 运行刚刚写的程序
[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
# 这边会卡在这边
  • 访问
shell 复制代码
# 访问方式: 
# 本地浏览器访问
http://127.0.0.1:8080/helloworld
  • 访问结果
shell 复制代码
# 浏览器中展示结果
Hello World

# console新增信息
[GIN] 2024/03/21 - 11:03:39 | 200 |            0s |       127.0.0.1 | GET      "/helloworld"
相关推荐
StickToForever3 小时前
第4章 信息系统架构(五)
经验分享·笔记·学习·职场和发展
闲猫5 小时前
go orm GORM
开发语言·后端·golang
丁卯4045 小时前
Go语言中使用viper绑定结构体和yaml文件信息时,标签的使用
服务器·后端·golang
leegong231116 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
Moonnnn.7 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
南宫生8 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐8 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
竹言笙熙8 小时前
代码审计初探
学习·web安全
日记成书8 小时前
物联网智能项目
物联网·学习
虾球xz9 小时前
游戏引擎学习第118天
学习·游戏引擎