基于 gorilla/mux 包实现路由定义和请求分发:处理静态资源响应


到目前为止,我们都是在处理动态资源,也就是 Go 代码实现的响应。HTTP 服务器除了处理动态资源之外,还应该具备处理静态资源的能力,比如 HTML、CSS、JavaScript、图片都属于静态资源的范畴。

要处理静态资源,需要借助 PathPrefix() 方法指定静态资源所在的路径前缀,然后在请求处理器中直接通过 http.FileServer 返回文件本身作为响应:

这样一来,当我们请求 http://localhost:8080/static/app.js 文件时,会到 static 目录下查找 app.js,如果找不到会返回 404,否则返回文件本身作为响应。

我们试着在上述入口文件所在目录下创建 static/app.js,并初始化代码如下:

然后在 static 目录下放置一张图片 test.jpg 文件,启动这个 HTTP 服务器:

注意这里我们通过 dir 参数指定了静态资源的目录为 static,如果不指定的话访问上述静态资源会报 404。

接下来,就可以在浏览器中访问服务器 static 目录下的静态资源了:

访问 JavaScript 文件

访问图片资源

虽然 gorilla/mux 路由器提供了对静态资源的支持,但是通常我们还是会和 PHP 一样,基于 Nginx 来处理静态资源,然后将动态请求转发给 Go HTTP 服务器,因为 Nginx 作为一款强大的反向代理服务器,并发处理静态资源的能力非常强悍,没必要自己去处理这块逻辑。


<< 上一篇: 基于 gorilla/mux 包实现路由定义和请求分发:路由中间件

>> 下一篇: 基于 gorilla/mux 实现路由匹配和请求分发:服务单页面应用