之前开发的一个前后端分离的平台,想发布页面需要使用tomcat或者nginx。
使用go的各类web框架也可以完成相关功能,诸如beego或gin功能较为庞大,于是自己写了一个只发布静态页面的服务,练练手。
不得不说go的基本库还是强大,这个代码量非常少。目前只是实现静态页面发布,浏览器通过端口打开页面。
构造http server
var vServer viewServer
viewhttp := &http.Server{
Addr: addr,
Handler: vServer,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
启动http server
func serverStart(h *http.Server) {
println("Start server", h.Addr)
err := h.ListenAndServe()
if err != nil {
println("Start server[" + h.Addr + "] error:" + err.Error())
}
}
http srever 处理器
func (server viewServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var fpath string
if r.URL.Path == "/" {
fpath = "index.html"
} else {
fpath = r.URL.Path[1:]
}
println("viewServer: ", fpath)
f, err := os.Open(fpath)
if err != nil {
return
}
http.ServeContent(w, r, getFilename(fpath), time.Now(), f)
}
核心代码就这么多。前端代码的index文件放到运行服务的统一文件夹。
默认端口为8080,需要使用其他端口可用参数制定。
./viewhttp 8001
源码地址