Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。