✨✨ 欢迎大家来到景天科技苑✨✨
?? 养成好习惯,先赞后看哦~??
? 作者简介:景天科技苑
?《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
?《博客》:Python全栈,Golang开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。
所属的专栏:Go语言开发零基础到高阶实战
景天的主页:景天科技苑
文章目录
Go语言web框架Gin一、认识Gin1. 什么是Gin2. 同类框架对比分析 二、我们为什么要学习web框架三、环境的准备和搭建1. 文档和go环境2. 项目搭建过程 四、Gin安装使用1. 安装gin2. Gin框架的基本使用
Go语言web框架Gin
一、认识Gin
1. 什么是Gin
Gin是一个用Go语言编写的高性能HTTP web框架,它提供了快速的HTTP路由、中间件支持以及JSON编码等功能。
Gin框架以其简洁的API和高效的性能著称,非常适合用来构建RESTful API和中小型Web应用。
2. 同类框架对比分析
Beego:开源的高性能 Go 语言 Web 框架。
beego是一个快速开发Go应用的http框架,go 语言方面技术大牛。beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。
Iris:全宇宙最快的 Go 语言 Web 框架。完备 MVC 支持,未来尽在掌握。
Iris是一个快速,简单但功能齐全的和非常有效的web框架。提供了一个优美的表现力和容易使用你的下一个网站或API的基础。
二、我们为什么要学习web框架
作为初学者很多时候,在学习一个框架的时候,一定要搞清楚我们为什么要学习它,这个非常的重要。
随着互联网技术的发展,在早期我们大部分情况下,编写的都是静态网页html。如果有100篇文章就要编写一百篇与之对应的静态网页。这样是非常痛苦的。
于是乎开始有了动态网页,动态网页必须要结合服务器端的技术,比如:Go、Java等。有了这些服务端语言的加持这样就可以完成一个静态网页到动态网页的转化。如下图:
三、环境的准备和搭建
1. 文档和go环境
Gin 官方文档地址:https://gin-gonic.com/zh-cn/docs/
版本的要求:最低版本要求:1.16
2. 项目搭建过程
1: 创建jt-gin工程
2:创建项目的mod文件
这个文件的作用就是:可以用来记录你未来安装的模块。方便进行统一管理。
创建好以后:
3:配置项目的环境
检查GOROOT
检查GOPATH
添加下载代理,这是七牛云的代理,它把go的一些常用的库缓存到它的服务器上,配了代理直接就可以从国内下载,不配置的话大概率下载第三方库会失败
复制GOPROXY=https://goproxy.cn,direct
放入到Enironment中如下:
一切准备就绪,接下来开始安装gin
四、Gin安装使用
Gin 官方文档地址:https://gin-gonic.com/zh-cn/docs/
1. 安装gin
在使用Gin框架之前,首先需要确保你的开发环境中已经安装了Go语言。访问Go官网下载适合你操作系统的安装包,并按照提示完成安装。配置好环境变量后,可以通过以下命令来安装Gin框架:
在终端命令行执行如下命令:
go get -u github.com/gin-gonic/gin
这条命令会下载并安装Gin框架的最新版本到你的Go工作区中。
检查是否安装成功
如果看到这个就说明安装成功了
2. Gin框架的基本使用
创建第一个Gin程序
新建一个HelloWorld.go文件,参考以下代码编写一个基本的Gin程序:
官网有提供
package mainimport ( "github.com/gin-gonic/gin")func main() { // 创建gin服务,创建一个默认的路由引擎ginServer。然后可以根据ginServer.GET,ginServer.ROST,ginServer.DELETE等内置函数处理客户端发来的http请求。 ginServer := gin.Default() // localhost:8088/hello // 处理请求的函数 *gin.Context ginServer.GET("/hello", func(c *gin.Context) { // c.JSON:响应给客户端JSON格式的数据 func (c *Context) JSON(code int, obj any) // gin.H : 参数 key value // gin.H 是一个便捷的快捷方式,你也可以直接使用 map[string]interface{} 来代替它 c.JSON(200, gin.H{"message": "Hello world!"}) }) // 启动HTTP服务,可以修改端口。默认是8080端口 ginServer.Run(":8088")}
这段代码首先导入了Gin包,然后通过gin.Default()创建了一个默认的Gin引擎实例,它包含了默认的中间件(如日志记录和错误恢复)。
接着,使用ginServer.GET(“/hello”)定义了一个GET请求的路由,当客户端请求根路径时,会执行匿名函数,其中c类型的gin.Context指针就是返回的内容,一般可以用c.HTML定义返回html文件,或者c.JSON返回JSON类型文件。JSON传参的格式是状态码code和空接口object;HTML是状态码code,模板名称name和空接口object。我们这里返回一个json字符串"Hello world!"。最后,通过ginServer.Run()启动Gin服务,我们监听8088端口。
默认监听在8080端口。
运行我们的框架,浏览器访问
浏览器访问,能拿到数据,运行成功
关于gin.H看下源码,就是 map[string] any
引入 gin.H 这个东西可以简化生成 json 的方式,如果需要嵌套 json,那么嵌套 gin.H 就可以了。例子:
c.JSON(http.StatusOK, gin.H{ "status": gin.H{ "code": http.StatusOK, "status": "登录成功", }, "message": message })