39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
// Package middleware ...
|
|
//
|
|
// Description : middleware ...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2024-07-26 11:54
|
|
package middleware
|
|
|
|
import (
|
|
"git.zhangdeman.cn/zhangdeman/gin/define"
|
|
"git.zhangdeman.cn/zhangdeman/gin/request"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type HookFunc func(ctx *gin.Context, requestData []byte, responseData map[string]interface{}, cost int64)
|
|
|
|
// HookAfterResponseMiddleware 请求最终处理完成之后执行的中间件
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 11:55 2024/7/26
|
|
func HookAfterResponseMiddleware(hookFunc HookFunc) gin.HandlerFunc {
|
|
handleConfig := define.GetHttpHandleConfig()
|
|
return func(ctx *gin.Context) {
|
|
ctx.Next()
|
|
if nil == hookFunc {
|
|
return
|
|
}
|
|
// hook 不为nil, 自动触发
|
|
hookFunc(
|
|
ctx,
|
|
[]byte(ctx.GetString(handleConfig.RecordRequestDataField)),
|
|
ctx.GetStringMap(handleConfig.RecordResponseDataField),
|
|
request.WrapperHandle.GetCtxIntData(ctx, handleConfig.StartRequestTimeField, 0)-request.WrapperHandle.GetCtxIntData(ctx, handleConfig.StartRequestTimeField, 0),
|
|
)
|
|
}
|
|
}
|