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),
 | |
| 		)
 | |
| 	}
 | |
| }
 |