35 lines
726 B
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()
|
|
}),
|
|
)
|
|
}
|