Golang实现静态服务器详解

本文详细讲解了如何使用Golang来实现一个静态服务器,重点介绍了http.Dir和http.StripPrefix的用法,这些功能分别在net/http/fs.go和net/http/server.go中定义。
摘要由CSDN通过智能技术生成

Golang实现静态服务器详解


Go的http库已经做了很好的底层封装,所以用该库可以用很简单的几十行代码编写一个http静态服务器。下面我们就具体分析一下http库对静态服务器的具体实现。

package main

import (
	"net/http"
)

func StaticServer(w http.ResponseWriter, r *http.Request) {
	http.StripPrefix("/", http.FileServer(http.Dir("./static/"))).ServeHTTP(w, r)
}

func main() {
	http.HandleFunc("/", StaticServer)
	http.ListenAndServe(":8080", nil)
}
    以上代码,在本地8080端口上打开一个http服务,可以访问当前目录下的static文件夹下的内容。具体实现都封装在http库里面了,好在go语言的库都是提供源代码的,我们可以一窥其全貌。
   http服务实现部分我将会用另外一篇文章做说明,这里只讲http静态文件部分,即 以下这句代码的实现细节:
http.StripPrefix("/", http.FileServer(http.Dir("./static/"))).ServeHTTP(w, r)

  首先 http.Dir("./static/") 这个结构体在“\Go\src\net\http\fs.go” 文件中实现,代码如下:

// A Dir implements FileSystem using the native file system restricted to a
// specific directory tree.
//
// While the FileSystem.Open method takes '/'-separated paths, a Dir's string
// value is a filename on the native file system, not a URL, so it is separated
// by filepath.Separator, which isn't necessarily '/'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值