• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用Go语言创建静态文件服务器问题

    上篇关于Go模板库应用 的文章最后我们留下一个问题,页面模板是通过 CDN 引用的 BootStrap 的 css , js 文件。到目前位置我们的服务器还无法伺服客户端的静态文件请求把服务器磁盘上的文件响应给客户端。使用和配置过 Nginx 服务器的一定知道 Nginx 天然支持静态资源的访问,那么我们是不是也要借助 Nginx 才能实现处理静态文件请求呢?其实不是,在最开始的文章我们说过“Go语言不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。”,这篇文章就让我们了解一下如何用 Go 语言的 net/http 库实现处理静态资源请求的问题。

    我们先用一个简单的例子学习一下使用 net/http 如何创建一个静态资源服务器,然后再应用到我们的 http_demo 项目中。

    创建静态资源服务器

    我们新建一个 main.go 存放创建静态资源服务器和监听请求的代码,同时在相同目录下创建 assets/css 和 assets/js 目录用于存放上篇文章页面模板使用到的静态文件。

    main.go
    assets/
    └── css
     └── bootstrap.min.css
    └── js
     └── bootstrap.min.js

    main.go 中的代码如下:

    package main
    
    import "net/http"
    
    func main() {
     fs := http.FileServer(http.Dir("assets/"))
     http.Handle("/static/", http.StripPrefix("/static/", fs))
    
     http.ListenAndServe(":8080", nil)
    }
    

    运行程序,然后用 cURL 请求一下 css 文件,看看有没有奏效。

    $ go run main.go
    
    $ curl -s http://localhost:8080/static/css/styles.css
    
    /*!
     * Bootstrap v3.3.7 (http://getbootstrap.com)
     * Copyright 2011-2016 Twitter, Inc.
     ......
    

    结合 gorillia/mux 使用文件服务器

    上面的例子中文件服务器的处理程序是注册到 net/http 库提供的标准的 ServeMux (服务复用器)中的,我们 http_demo 项目为了支持复杂的路由注册使用的是 gorillia/mux 库提供的服务复用器。两者的工作方式不太一样,所以把文件服务器应用到我们项目里还需要做些调整才能起作用。

    首先我们先把 assets 目录整个拷贝到项目的根目录。

    func RegisterRoutes(r *mux.Router) {
     // serve static file request
     fs := http.FileServer(http.Dir("assets/"))
     serveFileHandler := http.StripPrefix("/static/", fs)
     r.PathPrefix("/static/").Handler(serveFileHandler)
     ......
    }

    注册好文件服务器后,我们把之前页面模板引用的 CDN 上的 js 和 css 文件换成自己服务器上的文件链接。

    html lang="en">
    head>
     ......
     link href="/static/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">
    /head>
    
    body>
    
    {{ template "nav" .}}
    
    div class="container">
     {{template "content" .}}
    /div> !-- /container -->
    
    script src="/static/js/bootstrap.min.js">/script>
    /body>
    /html>

    然后重启服务器,访问之前的页面 http:localhost:/view/index  ,验证一下我们的服务器现在是否能伺服静态文件的请求了。

    页面样式正常,现在只要在服务器这个 assets 目录下的文件,我们都可以通过 http://localhost:8000/static/* 路径的 URL 访问到。

    总结

    到此这篇关于使用Go语言创建静态文件服务器的文章就介绍到这了,更多相关go 静态文件服务器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • golang搭建静态web服务器的实现方法
    • golang实现http服务器处理静态文件示例
    • Go语言实现简单的一个静态WEB服务器
    上一篇:Golang连接池的几种实现案例小结
    下一篇:Go Web 编程中的模板库应用指南(超详细)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用Go语言创建静态文件服务器问题 使用,语言,创建,静态,文件,