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 ( | import ( | ||||||
| 	"electricity_bill_calc/config" | 	"electricity_bill_calc/config" | ||||||
| 	"electricity_bill_calc/global" | 	"electricity_bill_calc/global" | ||||||
|  | 	"electricity_bill_calc/router" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"log" | 	"log" | ||||||
|  |  | ||||||
| @@ -30,11 +31,7 @@ func init() { | |||||||
| } | } | ||||||
|  |  | ||||||
| func main() { | func main() { | ||||||
| 	r := gin.Default() | 	gin.SetMode(config.ServerSettings.RunMode) | ||||||
| 	r.GET("/ping", func(c *gin.Context) { | 	r := router.Router() | ||||||
| 		c.JSON(200, gin.H{ |  | ||||||
| 			"message": "pong", |  | ||||||
| 		}) |  | ||||||
| 	}) |  | ||||||
| 	r.Run(fmt.Sprintf(":%d", config.ServerSettings.HttpPort)) | 	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