- 实现用户注册、登录、JWT令牌认证功能 - 集成Gin、GORM、Viper、Zap等框架 - 添加密码加密、数据库操作、中间件等完整功能 - 配置多环境支持、日志轮转、CORS处理 - 创建完整的项目结构和配置文件体系
67 lines
1.1 KiB
Go
67 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func main() {
|
|
|
|
//加载配置
|
|
cfg, err := LoadConfig()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
//初始化日志
|
|
err = InitLogger(cfg.App.Env)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
defer Logger.Sync()
|
|
|
|
//初始化数据库
|
|
err = InitDB(cfg)
|
|
if err != nil {
|
|
Logger.Fatal("数据库初始化失败", zap.Error(err))
|
|
}
|
|
|
|
//创建Gin应用
|
|
r := gin.Default()
|
|
|
|
//中间件
|
|
r.Use(LoggingMiddleware())
|
|
r.Use(CORSMiddleware())
|
|
|
|
// 公开路由
|
|
public := r.Group("/api")
|
|
{
|
|
public.GET("/health", HealthCheck)
|
|
public.POST("/register", Register(cfg))
|
|
public.POST("/login", Login(cfg))
|
|
}
|
|
|
|
// 受保护的路由
|
|
protected := r.Group("/api")
|
|
protected.Use(AuthMiddleware(cfg))
|
|
{
|
|
protected.GET("/profile", GetProfile)
|
|
protected.PUT("/profile", UpdateProfile)
|
|
}
|
|
|
|
// 启动服务器
|
|
addr := fmt.Sprintf(":%d", cfg.App.Port)
|
|
Logger.Info("Server starting",
|
|
zap.String("app", cfg.App.Name),
|
|
zap.Int("port", cfg.App.Port),
|
|
zap.String("env", cfg.App.Env),
|
|
)
|
|
|
|
if err = r.Run(addr); err != nil {
|
|
Logger.Fatal("Server error", zap.Error(err))
|
|
}
|
|
}
|