2.11 Go实现Web服务器
Go标准库提供的包
Go
语言里面提供了一个完善的net/http
包,通过net/http
包我们可以很方便的搭建一个可以运行的Web
服务器。同时使用net/http
包能很简单地对Web
的路由,静态文件,模版,cookie
等数据进行设置和操作。
Web服务器的工作方式
访问过程分析
-
客户机通过
TCP/IP
协议与服务器建立TCP
连接; -
客户端向服务器发送
HTTP
协议请求包,请求服务器里的资源文档; -
服务器向客户机发送
HTTP
协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端; -
客户机与服务器断开,由客户端解释
HTML
文档,在客户端屏幕上渲染图形结果。
搭建简单的Web服务器
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", index) // index 为向 url发送请求时,调用的函数
log.Fatal(http.ListenAndServe("localhost:8080", nil))
}
/* 资源访问函数 */
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello,Lucifer!")
}
为Web
服务器设置访问路由:
/* 资源访问函数 */
func index(w http.ResponseWriter, r *http.Request) {
// 设置访问路由--->读取内容
content, _ := ioutil.ReadFile("./Practice.html")
// 输出内容
w.Write(content)
}