generated from pkg/go-template
	This commit is contained in:
		
							parent
							
								
									bb60689055
								
							
						
					
					
						commit
						3f060be9b9
					
				@ -52,9 +52,9 @@ func appInit() {
 | 
			
		||||
	//requestId
 | 
			
		||||
	app.Use(requestid.New())
 | 
			
		||||
	//recover
 | 
			
		||||
	app.Use(api.FibberRecover)
 | 
			
		||||
	app.Use(api.FibberRecoverHandler)
 | 
			
		||||
	//requestId for gorm
 | 
			
		||||
	app.Use(api.FibberUserCtxWithTrace)
 | 
			
		||||
	app.Use(api.FibberUserCtxWithTraceHandler)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func routerInit() {
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,12 @@ package api
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
	"github.com/gofiber/fiber/v2/middleware/recover"
 | 
			
		||||
	ctxLogger "github.com/luizsuper/ctxLoggers"
 | 
			
		||||
	"go.uber.org/zap"
 | 
			
		||||
	"runtime"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// FiberErrHandler fiber 错误处理的中间件
 | 
			
		||||
@ -28,6 +33,11 @@ func FiberErrHandler(ctx *fiber.Ctx, err error) error {
 | 
			
		||||
 | 
			
		||||
// FibberRespHandler fiber resp的统一处理
 | 
			
		||||
func FibberRespHandler(c *fiber.Ctx) error {
 | 
			
		||||
	err := c.Next()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if respContentType := string(c.Response().Header.ContentType()); respContentType == fiber.MIMEApplicationJSON {
 | 
			
		||||
		resp := Response{
 | 
			
		||||
			Code:    0,
 | 
			
		||||
@ -40,22 +50,21 @@ func FibberRespHandler(c *fiber.Ctx) error {
 | 
			
		||||
	return c.Next()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FibberRecover fiberPanicRecover
 | 
			
		||||
func FibberRecover(c *fiber.Ctx) error {
 | 
			
		||||
	if respContentType := string(c.Response().Header.ContentType()); respContentType == fiber.MIMEApplicationJSON {
 | 
			
		||||
		resp := Response{
 | 
			
		||||
			Code:    0,
 | 
			
		||||
			Message: "",
 | 
			
		||||
			Data:    c.Response().Body(),
 | 
			
		||||
		}
 | 
			
		||||
		return c.JSON(resp)
 | 
			
		||||
// FibberRecoverHandler fiberPanicRecover
 | 
			
		||||
func FibberRecoverHandler() fiber.Handler {
 | 
			
		||||
	return recover.New(recover.Config{
 | 
			
		||||
		EnableStackTrace: true,
 | 
			
		||||
		StackTraceHandler: func(c *fiber.Ctx, e interface{}) {
 | 
			
		||||
			buf := make([]byte, 1024*1024)
 | 
			
		||||
			buf = buf[:runtime.Stack(buf, false)]
 | 
			
		||||
			fmt.Printf("panic: %v\n%s\n", e, buf)
 | 
			
		||||
			ctxLogger.FError(c, "panic", zap.String("", fmt.Sprintf("panic: %v\n%s\n", e, buf)))
 | 
			
		||||
		},
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	return c.Next()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FibberUserCtxWithTrace 把fibberCtx的traceId 置入UserCtx中
 | 
			
		||||
func FibberUserCtxWithTrace(c *fiber.Ctx) error {
 | 
			
		||||
// FibberUserCtxWithTraceHandler 把fibberCtx的traceId 置入UserCtx中
 | 
			
		||||
func FibberUserCtxWithTraceHandler(c *fiber.Ctx) error {
 | 
			
		||||
	c.SetUserContext(context.WithValue(context.Background(), fiber.HeaderXRequestID, c.Response().Header.Peek(fiber.HeaderXRequestID)))
 | 
			
		||||
	return c.Next()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user