Merge pull request #30 from infinite-iroha/dev

add slash settings && StaticFS
This commit is contained in:
WJQSERVER 2025-06-22 18:11:14 +08:00 committed by GitHub
commit 6c96e189d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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"