Files
gin/middleware/timeout.go

35 lines
726 B
Go

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