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

34
middleware/timeout.go Normal file
View File

@@ -0,0 +1,34 @@
// Package middleware ...
//
// Description : middleware ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2026-01-04 10:17
package middleware
import (
"net/http"
"time"
"github.com/gin-contrib/timeout"
"github.com/gin-gonic/gin"
)
// Timeout 超时处理中间件
func Timeout(ttl int64) func(ctx *gin.Context) {
if ttl <= 0 {
// 未设置超时
return func(ctx *gin.Context) {
ctx.Next()
}
}
// 设置超时中间件, 单位: ms
return timeout.New(
timeout.WithTimeout(time.Duration(ttl)*time.Millisecond),
timeout.WithResponse(func(ctx *gin.Context) {
ctx.JSON(http.StatusRequestTimeout, gin.H{"code": http.StatusRequestTimeout, "msg": "请求超时"})
ctx.Abort()
}),
)
}