diff --git a/main.go b/main.go index 4bf8598..42f0dc0 100644 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "electricity_bill_calc/config" "electricity_bill_calc/global" + "electricity_bill_calc/router" "fmt" "log" @@ -30,11 +31,7 @@ func init() { } func main() { - r := gin.Default() - r.GET("/ping", func(c *gin.Context) { - c.JSON(200, gin.H{ - "message": "pong", - }) - }) + gin.SetMode(config.ServerSettings.RunMode) + r := router.Router() r.Run(fmt.Sprintf(":%d", config.ServerSettings.HttpPort)) } diff --git a/response/base-response.go b/response/base-response.go new file mode 100644 index 0000000..756492f --- /dev/null +++ b/response/base-response.go @@ -0,0 +1,28 @@ +package response + +import ( + "net/http" + + "github.com/gin-gonic/gin" +) + +type Result struct { + Ctx *gin.Context +} + +type BaseResponse struct { + Code int `json:"code"` + Message string `json:"message"` +} + +func NewResult(ctx *gin.Context) *Result { + return &Result{Ctx: ctx} +} + +// 统一出错信息 +func (r *Result) Error(code int, msg string) { + res := BaseResponse{} + res.Code = code + res.Message = msg + r.Ctx.JSON(http.StatusOK, res) +} diff --git a/router/router.go b/router/router.go new file mode 100644 index 0000000..66f8622 --- /dev/null +++ b/router/router.go @@ -0,0 +1,35 @@ +package router + +import ( + "electricity_bill_calc/response" + "log" + "runtime/debug" + + "github.com/gin-gonic/gin" +) + +func Router() *gin.Engine { + router := gin.Default() + router.Use(Recover) + + return router +} + +//404 +func HandleNotFound(c *gin.Context) { + response.NewResult(c).Error(404, "资源未找到") +} + +//500 +func Recover(c *gin.Context) { + defer func() { + if r := recover(); r != nil { + //打印错误堆栈信息 + log.Printf("panic: %v\n", r) + debug.PrintStack() + response.NewResult(c).Error(500, "服务器内部错误") + } + }() + //继续后续接口调用 + c.Next() +}