1 回答

TA贡献2036条经验 获得超8个赞
我不是这方面的专家,gin但它类似于echo所以我创建了一个片段供您检查它是否符合您的需求。
看起来在附加后无法分离中间件,如此处所述,所以我的方法是检查每个请求的全局变量以查看资源是否可用。
package main
import (
"net/http"
"sync/atomic"
"github.com/gin-contrib/static"
"github.com/gin-gonic/gin"
)
// using atomic package instead of using mutexes looks better in this scope
var noIndex int32
func indexMiddleware() gin.HandlerFunc {
hdl := static.Serve("/", static.LocalFile("./pages/home", true))
return func(c *gin.Context) {
if atomic.LoadInt32(&noIndex) == 0 {
hdl(c)
// if you have additional middlewares, let them run
c.Next()
return
}
c.AbortWithStatus(http.StatusBadRequest)
}
}
func main() {
r := gin.Default()
r.Use(indexMiddleware())
r.POST("/example", func(c *gin.Context) {
atomic.CompareAndSwapInt32(&noIndex, 0, 1)
c.String(http.StatusOK, "OK")
})
r.Run(":8080")
}
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报