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