大佬教程收集整理的这篇文章主要介绍了golang web 自定义Handler时候静态资源问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
go 对静态文件的服务写法:
http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))
自己玩的时候遇到的问题:
自定义Handler实现servehttp() 方法来动态match路由 路由定义为:map[String]func(http.ResponseWriter,*http.request) 路径match路由函数 静态文件的请求也会走自己实现的servehttp() 方法 会在map中匹配不到路由
导致静态文件(模板中js和css等)导入失败
后来自己看了看源码 找到一个low b的解决办法 在servehttp() 判断是否请求静态资源(规则自定义)调用http.StripPrefix("/static/",http.FileServer(http.Dir("static")))返回的handler的servehttp方法实现静态文件服务
Servehttp:
func(*myHandler)Servehttp(whttp.ResponseWriter,r*http.request){ fmt.Println("outer:",r.URl.Path) ifh,ok:=mux[r.URl.String()];ok{ h(w,r) }elseifStrings.HasPrefix(r.URl.String(),"/static/"){ had:=http.StripPrefix("/static/",http.FileServer(http.Dir("static"))) had.Servehttp(w,r) }else{ http.Error(w,"404notfound",404) } }
以上是大佬教程为你收集整理的golang web 自定义Handler时候静态资源问题全部内容,希望文章能够帮你解决golang web 自定义Handler时候静态资源问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。