Go http.StripPrefix 和 File Server的使用
文章目录
代码的整洁和进行合理的分流
http.StripPrefix函数的作用之一,就是在将请求定向到你通过参数指定的请求处理处之前,将特定的prefix从URL中过滤出去.
下面是一个浏览器或HTTP客户端请求资源的例子:
/assets/js/page.min.js
StripPrefix 函数将会过滤掉/assets/,
并将修改过的请求定向到http.FileServer所返回的Handler中去,因此请求的资源将会是:
/js/page.min.js
http.FileServer 返回的Handler将会进行查找,并将与文件夹或文件系统有关的内容以参数的形式返回给你
(在这里你将"static"作为静态文件的根目录)
因为你的"page.min.js"文件在静态目录 js 中.
FileServer 加载项目中的路径是这样的
---static/
|---js/
|---page.min.js
---templates/
|---master.tmpl
---main.go
根据需要定制访问路径
// To serve a directory on disk (/tmp) under an alternate URL
// path (/tmpfiles/), use StripPrefix to modify the request
// URL's path before the FileServer sees it:
http.Handle("/assets/",
http.StripPrefix("/assets/", http.FileServer(http.Dir("/static"))))
FileServer 已经明确静态文件的根目录在"/static",但是我们希望URL以"/assets/"开头.
如果有人请求"/assets/page.min.js",我们希望服务器能将文件发送给他.
为了达到这个目的,我们必须从URL中过滤掉"/assets", 而剩下的路径是相对于根目录"/static"的相对路径。如果我们按照如上做法,将会得到如下结果:
/assets/js/page.min.js