online_code/main.go

51 lines
1.0 KiB
Go

package main
import (
"fmt"
"git.echol.cn/loser/logger/log"
"github.com/gin-gonic/gin"
"golang.org/x/sync/errgroup"
"net/http"
"online_code/config"
"online_code/core"
"online_code/route"
"time"
)
var g errgroup.Group
// 启动入口
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())
// 初始化路由
route.InitRoute(app.Group(config.Scd.Api.Prefix))
return app
}