一、Web框架采用Gin框架
1、Gin框架优点:
高性能,稳定性强,扩展性强
2、Gin框架特性:
速度快、中间件、异常处理、JSON、路由分组、渲染内置
二、安装Gin
1、手动安装gin
go get -u -v github.com/gin-gonic/gin
# -v :打印出被构建的代码包的名字
# -u :已存在相关的代码包,强行更新代码包及其依赖包
三、编写第一个Gin程序
1、创建apiserver文件夹,在里面新建文件 main.go 。
注意:这里的文件名可以不叫main.go,但是由于它是主运行文件,所以按惯例可以命名为main.go
2、apiserver/main.go文件内容:
// 声明当前文件属于哪个包,如果是主文件,则写成main
package main
// 导入gin
import "github.com/gin-gonic/gin"
func main() {
// 生成了一个实例,这个实例即 WSGI 应用程序
g := gin.Default()
// 声明了一个路由/ 及对应的处理函数
g.GET("/", func(c *gin.Context) { c.String(200, "Hello, 三创人") })
// 让应用运行在本地服务器上,默认监听端口是 8080
g.Run("0.0.0.0:8000")
// listen and serve on 0.0.0.0:8000
}
3、解析文件内容
1. 首先,我们使用了 gin.Default() 生成了一个实例,这个实例即 WSGI 应用程序。
2. 接下来,我们使用 g.Get("/", ...) 声明了一个路由,告诉 Gin 什么样的URL 能触发传入的函数,这个函数返
回我们想要显示在用户浏览器中的信息。
3. 最后用 g.Run() 函数来让应用运行在本地服务器上,默认监听端口是 8000,可以传入参数设置端口,例如
g.Run(":8000") 即运行在8000端口。
4、初始化
go mod init apiserver
go mod tidy
5、运行
go run main.go
6、浏览器访问本机ip:8000端口
7、访问不成功的常见问题
1、检查防火墙是否关闭
2、看端口监听是否正常,端口有没有被占用
四、路由模块化
1、什么是路由模块化
在 main() 函数中主要做一些配置文件解析、程序初始化和路由加载之类的事情
2、为什么要模块化
模块化的主要目的是将不同的功能拆分到不同的目录和文件,会让整个项目结构层次上会更清晰。
后期维护会更便捷。
3、创建路由模块
1、目录结构:
[root@linuxserver apiserver]# tree
.
├── go.mod
├── go.sum
├── main.go
└── router
── router.go
2、创建目录router,再编写router.go文件
mkdir router
3、
router目录负责路由相关内容,如定义路由及路由处理函数,路由加载的中间件等
4、编写路由文件apiserver/router/router.go:
package router
import (
"github.com/gin-gonic/gin"
)
// Load中负责加载中间件middlewares、路由routes和handlers
func Load(g *gin.Engine, mw ...gin.HandlerFunc) *gin.Engine {
// 添加路由
g.GET("/", func(c *gin.Context) {
c.String(200, "Hello, 三创人")
})
// 加载中间件
g.Use(mw...)
return g
}
4、在主文件apiserver/main.go里导入并引用路由
// 声明当前文件属于哪个包,如果是主文件,则写成main
package main
// 导入gin
import (
// 导入路由模块
"apiserver/router"
"github.com/gin-gonic/gin"
)
func main() {
// 生成了一个实例,这个实例即 WSGI 应用程序
g := gin.Default()
//-modify here- 加载路由
router.Load(g)
// 让应用运行在本地服务器上,默认监听端口是 8080
g.Run("0.0.0.0:8000") // listen and serve on 0.0.0.0:8000
}
5、测试
6、配置NoRoute的处理
客户端在访问时,难免会输入错误的url,所以可以添加NoRoute处理404请求
7、再次测试
五、编译源码
1、进入 apiserver 目录编译源代码
go build .
# 编译后的二进制文件存放在当前目录,名字跟目录名相同: apiserver 或 apiserver.exe 。
2、直接运行
./apiserver
版权声明:本文为weixin_47661174原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。