golang-study/gin/main.go

59 lines
1.1 KiB
Go
Raw Normal View History

2024-11-14 00:07:35 +08:00
package main
import (
"context"
"gin-study/internal/controller"
"log"
"net/http"
"os"
"os/signal"
"time"
"github.com/gin-gonic/gin"
"github.com/thinkerou/favicon"
)
func main() {
e := gin.Default()
2024-11-14 00:24:14 +08:00
// 注册 favicon
e.Use(favicon.New("./templates/favicon.ico"))
2024-11-14 00:07:35 +08:00
e.Use(gin.Recovery())
controller.Register(e)
2024-11-14 00:24:14 +08:00
// 静态资源文件
e.Static("/static", "./templates/static")
// 加载 HTML 模板
e.LoadHTMLGlob("templates/*.html")
e.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"msg": "Hello Gin",
})
})
// 启动 HTTP 服务
2024-11-14 00:07:35 +08:00
srv := &http.Server{
Addr: ":8848",
Handler: e,
}
go func() {
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("listen: %s\n", err)
}
}()
2024-11-14 00:24:14 +08:00
// 等待中断信号以优雅地关闭服务器
2024-11-14 00:07:35 +08:00
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt)
<-quit
log.Println("Shutdown Server...")
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatal("Server Shutdown:", err)
}
}