博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang web 自定义Handler时候静态资源问题
阅读量:5954 次
发布时间:2019-06-19

本文共 858 字,大约阅读时间需要 2 分钟。

  hot3.png

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(w http.ResponseWriter, r *http.Request) {	fmt.Println("outer:", r.URL.Path)	if h, ok := mux[r.URL.String()]; ok {		h(w, r)	} else if strings.HasPrefix(r.URL.String(), "/static/") {		had := http.StripPrefix("/static/", http.FileServer(http.Dir("static")))		had.ServeHTTP(w, r)	} else {		http.Error(w, "404 not found", 404)	}}

转载于:https://my.oschina.net/u/1778309/blog/478902

你可能感兴趣的文章
TDDL
查看>>
我的友情链接
查看>>
linux下mysql的root密码忘记解决方
查看>>
我的友情链接
查看>>
远程访问dmz和虚拟服务器的设置
查看>>
mysql主从配置
查看>>
HA集群配置
查看>>
UINavigationBar UINavigationItem UIBarButtonItem
查看>>
我的友情链接
查看>>
echarts
查看>>
Mac安装Brew
查看>>
Python yield 使用浅析
查看>>
Android UI-实现底部切换标签(fragment)
查看>>
string类常用单字符处理函数
查看>>
MYSQL 时间函数总结
查看>>
大话数据结构读书笔记系列(七)图
查看>>
java队列,ArrayBlockingQueue
查看>>
Linux 下java jdk安装
查看>>
ITV/IPTV常见错误代码及解决办法
查看>>
android studio打包aar心得
查看>>