forked from free-lancers/electricity_bill_calc_service
		
	feat(foundation):构建基本的路由创建结构。
This commit is contained in:
		
							
								
								
									
										9
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								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))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								response/base-response.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								response/base-response.go
									
									
									
									
									
										Normal file
									
								
							@@ -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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								router/router.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								router/router.go
									
									
									
									
									
										Normal file
									
								
							@@ -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()
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user