Gin Web 服务器
创建模块
执行 go mod init
命令,指定模块路径。
go mod init literank.com/event-books
其结果:
go: creating new go.mod: module literank.com/event-books
go: to add module requirements and sums:
go mod tidy
该命令会创建一个 go.mod
文件,其用于追踪管理项目依赖。
安装依赖框架
安装 Gin
框架:
go get -u github.com/gin-gonic/gin
该命令会更新 go.mod
文件并在项目中自动创建一个 go.sum
文件。
创建模板目录
创建一个名为 templates
的目录,将 index.html
移进去。
调整页面标题:
- <h1 class="text-4xl font-bold">LiteRank Book Store</h1>
+ <h1 class="text-4xl font-bold">{{ .title }}</h1>
{{ .title }}
是 Go HTML 模板包使用的模板语法。
Gin 内部使用了该模板包,所以在渲染 HTML 模板时也沿用了该语法。
创建 main.go:
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
// 创建一个新的 Gin 路由设置器 router
router := gin.Default()
// 从目录中载入 HTML 模板
router.LoadHTMLGlob("templates/*.html")
// 定义主页的路由
router.GET("/", func(c *gin.Context) {
// 渲染 HTML 模板文件 "index.html"
c.HTML(http.StatusOK, "index.html", gin.H{
"title": "LiteRank Book Store",
})
})
// 运行服务器,默认端口 8080
router.Run()
}
如下运行程序:
go run main.go
将得到类似如下信息:
[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] Loaded HTML Templates (2):
-
- index.html
[GIN-debug] GET / --> 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] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080
你的 web 服务器已经在 8080 端口跑起来了。
尝试在浏览器中访问 http://localhost:8080/ 。它应该展示一个如之前章节设计的网页给你。