除负责将请求重定向到相应的处理器之外,多路复用器还需要为静态文件提供服务。为了做到这一点,程序使用FileServer
函数创建了一个能够为指定目录中的静态文件服务的处理器,并将这个处理器传递给了多路复用器的Handle函数。除此之外,程序还使用StripPrefix函数去移除请求URL中的指定前缀:
files := http.FileServer(http.Dir("/public"))
mux.Handle("/static/", http.StripPrefix("/static/", files))
当服务器接收到一个以/static/
开头的URL请求时,以上两行代码会移除URL中的/static/
字符串,然后在public
目录中查找被请求的文件。比如说,当服务器接收到一个针对文件http://localhost/static/css/bootstrap.min.css
的请求时,它将会在public
目录中查找以下文件:
<application root>/css/bootstrap.min.css
当服务器成功地找到这个文件之后,会把它返回给客户端。