package main import ( "github.com/gin-gonic/gin" "log" "net/http" "time" ) // ApiResponse 封装一个响应结构体 type ApiResponse struct { Code uint8 `json:"code"` Msg string `json:"msg"` MsgCode uint8 `json:"msg_code"` Data gin.H `json:"data"` } // CreateEngine 建立Gin.Engine func CreateEngine() *gin.Engine { engine := gin.New() RegisterMiddleware(engine) RegisterRoute(engine) return engine } // RegisterMiddleware 注册中间件 func RegisterMiddleware(engine *gin.Engine) { engine.Use(gin.Logger()) engine.Use(gin.Recovery()) } // HelloView 第一个视图函数 func HelloView(ctx *gin.Context) { ctx.JSON(http.StatusOK, ApiResponse{ Code: 1, Msg: "请求成功", MsgCode: 100, Data: gin.H{ "url": ctx.Request.URL.String(), "method": ctx.Request.Method, "datetime": time.Now().Format("2006-01-02 15:04:05"), "message": "Hello, Gin!", }, }) } // NotFound 404视图函数 func NotFound(ctx *gin.Context) { ctx.JSON(http.StatusNotFound, ApiResponse{ Code: 0, Msg: "请求失败", MsgCode: 104, Data: nil, }) } // RegisterRoute 路由注册 func RegisterRoute(engine *gin.Engine) { engine.GET("/hello", HelloView) engine.POST("/hello", HelloView) // 路由组 ApiV1Group := engine.Group("/v1") { ApiV1Group.GET("/hello", HelloView) ApiV1Group.POST("/hello", HelloView) } // 404 返回接口数据 engine.NoRoute(NotFound) } func main() { engine := CreateEngine() // 启动Gin服务 if err := engine.Run("127.0.0.1:8081"); err != nil { log.Panicf("服务启动失败:%v\n", err) } }