• 首页
  • go
  • Go http.StripPrefix 和 File Server的使用

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

出自:Go http.StripPrefix 和 File Server的使用

回到顶部