go 语言快速创建一个 web server

创建一个 web server

Go 语言里面提供了一个完善的 net/http 包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很便利地对 Web 的路由,静态文件,模版,cookie 等数据进行操作。

一个示例 :

package main

import (
	"fmt"
	"log"
	"net/http"
	"strings"
)

func home(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()       // 解析参数,默认是不会解析的
	fmt.Println(r.Form) // 这些信息是输出到服务器端的打印信息
	fmt.Println("path : ", r.URL.Path)
	fmt.Println("scheme : ", r.URL.Scheme)
	fmt.Println(r.Form["url_long"])
	for k, v := range r.Form {
		fmt.Println("key:", k)
		fmt.Println("val:", strings.Join(v, ""))
	}
	fmt.Fprintf(w, "网站首页") //这个写入到w的是输出到客户端的
}

func main() {
	http.HandleFunc("/", home)              // 设置访问的路由 如首页
	err := http.ListenAndServe(":800", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

就是这么方便, 一个 web server 创建好了, 通过访问 : http://localhost:800/ 即可体验 ~

web server 的几个重要概念

Request 用户请求的信息,用来解析用户的请求信息,包括post、get、cookie、url等信息
Response 服务器需要反馈给客户端的信息
Conn 用户的每次请求链接
Handler 处理请求和生成返回信息的处理逻辑

web server 执行流程

1 创建Listen Socket, 监听指定的端口, 等待客户端请求到来。
2 监听并接收客户端的请求, 接下来通过Client Socket与客户端通信。
3 处理客户端的请求, 首先从Client Socket读取HTTP请求的协议头, 如果是POST方法, 还可能要读取客户端提交的数据, 然后交给相应的handler处理请求, handler处理完毕准备好客户端需要的数据, 通过Client Socket写给客户端。

go 语言实现 web server 的关键点

1. 通过 http.ListenAndServe(":800", nil) 监听请求
2. 通过 http.HandleFunc("/", home) 处理请求
3. 通过 http.ResponseWriter() 输出响应结果