Go Gin 框架系列 - 入门篇

后面将会持续输出 go Gin 框架系列的文章,从简到繁,由浅入深,对这一系列感兴趣的小伙伴,欢迎关注动态更新,让我们一起学习,一起进步!

Gin 框架介绍

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

上述内容摘自官网文档。从描述中我们可以知道 Gin 是一个 WEB 框架,其在性能方面有显著的优势。除此之外,Gin 框架还具备着其他优势和特点,例如 简单高效轻量级设计对用户友好的 API灵活的路由与中间件配置 以及 内置良好的错误处理机制 等。

如果你刚开始学习 Go 语言并且正在寻找一个易于上手的 web 框架,那么 Gin 框架无疑是你的最佳选择。

对于那些追求高性能并且希望快速推进项目的开发团队,Gin 框架是一个值得考虑的选项。

Gin 初体验

安装

go 版本要求 1.13 及以上版本

  • 1、下载并安装 gin

    arduino 复制代码
    go get -u github.com/gin-gonic/gin
  • 2、代码引入

    arduino 复制代码
    import "github.com/gin-gonic/gin"

示例

一个完整的示例代码如下所示:

go 复制代码
package main

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

func main() {
	r := gin.Default()
	r.GET("/hello", func(ctx *gin.Context) {
		ctx.JSON(200, gin.H{
			"message": "你好,世界!欢迎关注掘金用户:陈明勇,或 Go技术干货 公众号,一起学习一起进步!",
		})
	})
	r.Run(":8080")
}

运行代码之后,我们可以通过多种方式来测试所定义的接口: 一是通过终端中的 curl 命令(执行 curl http://127.0.0.1:8080/hello); 二是直接在浏览器地址栏输入对应的 URL; 三是利用 API 工具例如 Postman 进行测试。Postman 测试结果如下所示:

代码分析:

  • 首先,我们通过 gin.Default() 函数获取到一个 Gin 框架默认实例,该实例会自动添加了两个预配置的中间件: Logger 日志处理中间件和处理 panicRecovery 中间件。如果你需要一个创建空配置的 Gin 实例,你可以使用 gin.New() 函数。
  • 其次,获取到 gin 实例之后,我们通过 GET() 方法注册一个 GET 请求的路由,其路径设置为 /hello。在这个路由的处理函数中,我们使用 ctx.JSON() 方法来构造并发送一个 JSON 格式的响应。其中,gin.H 是一个 map[string]any 的简写,用于方便地定义 JSON 响应的键值对。
  • 最后,我们通过 r.Run() 方法启动一个 WEB 服务器,并传入 :8080 作为参数。这样会让 WEB 服务器监听 8080 端口。需要注意的是,这个端口参数是可选的,如果没有指定端口,Gin 会默认使用 8080 端口。

小结

本文首先简单介绍了 Go Gin 框架,包括它的一些优势和特点,然后通过一个入门示例,演示了如何安装和使用 Gin 启动一个 WEB 服务器并注册路由。通过短短几行代码就能启动一个 WEB 服务器,可知 Gin 是一个简单、高效且易于使用的框架,非常适合快速开发和迭代。

后续文章将介绍 Go Gin 框架的其他主题内容,敬请期待。

参考资料

1\] Gin 介绍:[gin-gonic.com/zh-cn/docs/...](https://link.juejin.cn?target=https%3A%2F%2Fgin-gonic.com%2Fzh-cn%2Fdocs%2Fintroduction%2F "https://gin-gonic.com/zh-cn/docs/introduction/") > 作者:陈明勇 > > 个人网站:[chenmingyong.cn](https://link.juejin.cn?target=https%3A%2F%2Fchenmingyong.cn "https://chenmingyong.cn") > > 文章持续更新,如果本文能让您有所收获,欢迎点赞收藏加关注本掘金号。 > > 微信阅读可搜《Go技术干货》。这篇文章已被收录于 GitHub [github.com/chenmingyon...](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fchenmingyong0423%2Fblog "https://github.com/chenmingyong0423/blog") ,欢迎大家 Star 催更并持续关注。

相关推荐
一线大码20 分钟前
SpringBoot 和 MySQL 的事务隔离级别关系
spring boot·后端·mysql
罗政1 小时前
基于 SpringBoot + Vue 在线点餐系统(前后端分离)
vue.js·spring boot·后端
曼岛_1 小时前
[架构之美]深入优化Spring Boot WebFlux应用
spring boot·后端·架构
雨果talk1 小时前
【一文看懂Spring循环依赖】Spring循环依赖:从陷阱破局到架构涅槃
java·spring boot·后端·spring·架构
想躺平的咸鱼干1 小时前
Elasticsearch 的自动补全以及RestAPI的使用
java·后端·elasticsearch·中间件·intellij-idea
bobz9651 小时前
k8s 内存预留
后端
没逻辑2 小时前
Go 内存逃逸与泄漏排查实战
go
郝同学的测开笔记2 小时前
一次业务投诉引发的思考:如何优雅地将K8s服务暴露给外部?
后端·kubernetes
壹米饭2 小时前
Java程序员学Python学习笔记一:学习python的动机与思考
java·后端·python
全栈派森2 小时前
机器学习第五课: 深度神经网络
后端·神经网络·机器学习