You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.2 KiB
Go

package main
import (
"Lee-WineList/config"
"Lee-WineList/core"
"Lee-WineList/initialize"
"Lee-WineList/oauth2"
appRoute "Lee-WineList/router"
"fmt"
"git.echol.cn/loser/logger/log"
"github.com/gin-gonic/gin"
"golang.org/x/sync/errgroup"
"net/http"
"time"
)
var g errgroup.Group
// 系统初始化
func init() {
initialize.InitSystem() // 初始化系统配置
oauth2.InitOAuth2Server() // 初始化OAuth2服务
}
// 启动入口
func main() {
// 强制日志颜色化
gin.ForceConsoleColor()
// 定义启动入口
app := &http.Server{
Addr: fmt.Sprintf(":%d", config.Scd.Api.Port),
Handler: api(),
ReadTimeout: 5 * time.Second,
WriteTimeout: 1 * time.Minute,
}
// 启动项目
g.Go(func() error {
return app.ListenAndServe()
})
if err := g.Wait(); err != nil {
log.Panicf("启动失败,错误信息:%s", err.Error())
}
}
// 生成接口服务
func api() http.Handler {
app := gin.New()
app.Use(gin.Recovery())
// 开启自定义请求方式不允许处理函数
app.HandleMethodNotAllowed = true
// 处理请求方式不对
app.NoMethod(core.NoMethodHandler())
// 404返回数据
app.NoRoute(core.NoRouteHandler())
// 初始化路由
appRoute.InitRoute(app.Group(config.Scd.Api.Prefix))
return app
}