feat: 支持设置请求超时中间件

This commit is contained in:
2026-01-04 11:16:36 +08:00
parent 1830f0a571
commit 5e2964b5af
6 changed files with 70 additions and 14 deletions

View File

@@ -203,6 +203,8 @@ func (s *server) Group(routerPrefix string, middlewareList []gin.HandlerFunc, co
} else {
apiMiddlewareList = append(apiMiddlewareList, runtime.FuncForPC(reflect.ValueOf(s.RequestHandler).Pointer()).Name())
}
// 设置 超时 函数描述
apiMiddlewareList = append(apiMiddlewareList, runtime.FuncForPC(reflect.ValueOf(middleware.Timeout).Pointer()).Name())
// 设置 logic 函数描述
apiMiddlewareList = append(apiMiddlewareList, runtime.FuncForPC(itemUriCfg.ApiLogicFunc.Func.Pointer()).Name())
@@ -231,21 +233,25 @@ func (s *server) Group(routerPrefix string, middlewareList []gin.HandlerFunc, co
// registerRouter 注册路由
func (s *server) registerRouter(routerGroup *gin.RouterGroup, method string, itemUriCfg UriConfig, handleFunc gin.HandlerFunc) {
funcList := []gin.HandlerFunc{
middleware.Timeout(itemUriCfg.MaxExecTime), // 超时处理
handleFunc,
}
switch method {
case http.MethodGet:
routerGroup.GET(itemUriCfg.Path, handleFunc)
case http.MethodHead:
routerGroup.HEAD(itemUriCfg.Path, handleFunc)
routerGroup.HEAD(itemUriCfg.Path, funcList...)
case http.MethodPost:
routerGroup.POST(itemUriCfg.Path, handleFunc)
routerGroup.POST(itemUriCfg.Path, funcList...)
case http.MethodPut:
routerGroup.PUT(itemUriCfg.Path, handleFunc)
routerGroup.PUT(itemUriCfg.Path, funcList...)
case http.MethodPatch:
routerGroup.PATCH(itemUriCfg.Path, handleFunc)
routerGroup.PATCH(itemUriCfg.Path, funcList...)
case http.MethodDelete:
routerGroup.DELETE(itemUriCfg.Path, handleFunc)
routerGroup.DELETE(itemUriCfg.Path, funcList...)
case http.MethodOptions:
routerGroup.OPTIONS(itemUriCfg.Path, handleFunc)
routerGroup.OPTIONS(itemUriCfg.Path, funcList...)
case http.MethodTrace:
panic(`method Trace is not supported`)
default: