From 6c6a5a99b1cf2f2e794c45d95ff1fcbf37670592 Mon Sep 17 00:00:00 2001 From: wjqserver <114663932+WJQSERVER@users.noreply.github.com> Date: Sun, 22 Jun 2025 18:06:19 +0800 Subject: [PATCH] add slash settings && StaticFS --- engine.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/engine.go b/engine.go index ff47fc3..fb18274 100644 --- a/engine.go +++ b/engine.go @@ -202,6 +202,21 @@ func (engine *Engine) SetTLSServerConfigurator(fn func(*http.Server)) { engine.TLSServerConfigurator = fn } +// 是否开启末尾slash重定向 +func (engine *Engine) SetRedirectTrailingSlash(enable bool) { + engine.RedirectTrailingSlash = enable +} + +// 是否开启固定路径重定向 +func (engine *Engine) SetRedirectFixedPath(enable bool) { + engine.RedirectFixedPath = enable +} + +// 是否开启MethodNotAllowed +func (engine *Engine) SetHandleMethodNotAllowed(enable bool) { + engine.HandleMethodNotAllowed = enable +} + // SetLogger传入实例 func (engine *Engine) SetLogger(logger *reco.Logger) { engine.LogReco = logger @@ -934,6 +949,34 @@ func (group *RouterGroup) StaticFile(relativePath, filePath string) { group.OPTIONS(relativePath, FileHandle) } +// StaticFS +func (engine *Engine) StaticFS(relativePath string, fs http.FileSystem) { + // 清理路径 + relativePath = path.Clean(relativePath) + + // 确保相对路径以 '/' 结尾,以便 FileServer 正确处理子路径 + if !strings.HasSuffix(relativePath, "/") { + relativePath += "/" + } + + // 注册一个捕获所有路径的路由,使用 FileServer 处理器 + engine.ANY(relativePath+"*filepath", FileServer(fs)) +} + +// Group的StaticFS +func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) { + // 清理路径 + relativePath = path.Clean(relativePath) + + // 确保相对路径以 '/' 结尾,以便 FileServer 正确处理子路径 + if !strings.HasSuffix(relativePath, "/") { + relativePath += "/" + } + + // 注册一个捕获所有路径的路由,使用 FileServer 处理器 + group.ANY(relativePath+"*filepath", FileServer(fs)) +} + // 维护一个Methods列表 var ( MethodGet = "GET"