Go Gin 框架系列 - 入门篇

简介: 本文将会对 Go Gin 框架进行简单介绍,括它的一些优势和特点,然后通过一个入门示例,演示了如何安装和使用 Gin 启动一个 WEB 服务器并注册路由。

后面将会持续输出 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

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

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

示例

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

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 测试结果如下所示:

p2.png

代码分析:

  • 首先,我们通过 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 介绍:https://gin-gonic.com/zh-cn/docs/introduction/

作者:陈明勇

个人网站:chenmingyong.cn

文章持续更新,如果本文能让您有所收获,欢迎点赞收藏加关注本号。

微信阅读可搜《Go技术干货》。这篇文章已被收录于 GitHub https://github.com/chenmingyong0423/blog ,欢迎大家 Star 催更并持续关注。

目录
相关文章
|
20天前
|
开发框架 Go 计算机视觉
纯Go语言开发人脸检测、瞳孔/眼睛定位与面部特征检测插件-助力GoFly快速开发框架
开发纯go插件的原因是因为目前 Go 生态系统中几乎所有现有的人脸检测解决方案都是纯粹绑定到一些 C/C++ 库,如 OpenCV 或 dlib,但通过 cgo 调用 C 程序会引入巨大的延迟,并在性能方面产生显著的权衡。此外,在许多情况下,在各种平台上安装 OpenCV 是很麻烦的。使用纯Go开发的插件不仅在开发时方便,在项目部署和项目维护也能省很多时间精力。
|
29天前
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
80 4
|
29天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
70 1
|
1月前
|
存储 设计模式 安全
Go语言中的并发编程:从入门到精通###
本文深入探讨了Go语言中并发编程的核心概念与实践技巧,旨在帮助读者从理论到实战全面掌握Go的并发机制。不同于传统的技术文章摘要,本部分将通过一系列生动的案例和代码示例,直观展示Go语言如何优雅地处理并发任务,提升程序性能与响应速度。无论你是Go语言初学者还是有一定经验的开发者,都能在本文中找到实用的知识与灵感。 ###
|
1月前
|
Serverless Go
Go语言中的并发编程:从入门到精通
本文将深入探讨Go语言中并发编程的核心概念和实践,包括goroutine、channel以及sync包等。通过实例演示如何利用这些工具实现高效的并发处理,同时避免常见的陷阱和错误。
|
2月前
|
安全 Go 开发者
破译Go语言中的并发模式:从入门到精通
在这篇技术性文章中,我们将跳过常规的摘要模式,直接带你进入Go语言的并发世界。你将不会看到枯燥的介绍,而是一段代码的旅程,从Go的并发基础构建块(goroutine和channel)开始,到高级模式的实践应用,我们共同探索如何高效地使用Go来处理并发任务。准备好,让Go带你飞。
|
3月前
|
JSON Go API
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
使用Go语言和Gin框架构建RESTful API:GET与POST请求示例
|
2月前
|
存储 安全 Go
Go语言切片:从入门到精通的深度探索###
本文深入浅出地剖析了Go语言中切片(Slice)这一核心概念,从其定义、内部结构、基本操作到高级特性与最佳实践,为读者提供了一个全面而深入的理解。通过对比数组,揭示切片的灵活性与高效性,并探讨其在并发编程中的应用优势。本文旨在帮助开发者更好地掌握切片,提升Go语言编程技能。 ###
|
3月前
|
消息中间件 NoSQL Go
PHP转Go系列 | ThinkPHP与Gin框架之Redis延时消息队列技术实践
【9月更文挑战第7天】在从 PHP 的 ThinkPHP 框架迁移到 Go 的 Gin 框架时,涉及 Redis 延时消息队列的技术实践主要包括:理解延时消息队列概念,其能在特定时间处理消息,适用于定时任务等场景;在 ThinkPHP 中使用 Redis 实现延时队列;在 Gin 中结合 Go 的 Redis 客户端库实现类似功能;Go 具有更高性能和简洁性,适合处理大量消息。迁移过程中需考虑业务需求及系统稳定性。
|
4月前
|
Unix Go
Go从入门到放弃之时间操作
Go从入门到放弃之时间操作