首页 > 其他 > 详细

Gin_02_单文件拆解基本模块

时间:2021-08-07 14:55:47      阅读:12      评论:0      收藏:0      [点我收藏+]
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)
	}
}

Gin_02_单文件拆解基本模块

原文:https://www.cnblogs.com/carp-li/p/15111131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!