Osheep

时光不回头,当下最重要。

32. 一个简单的 web 服务器实现

go 语言实现 web 服务器很容易。这样就可以很任意的建立 web 应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的通过浏览器能够打印出我们想要的文字就可以了。
我们需要实现 http.Handler 。

func sayhello_cofox(w http.ResponseWriter, r *http.Request) 

然后用 http.HandleFunc 设置访问的路由
使用 http.ListenAndServe 设置主域名和端口号

err := http.ListenAndServe(":4000", nil)

这个例子中,我们使用 4000 端口。主域名省略。这样所有本机 IP 和域名就都可以使用。
比如:

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

完整代码

package main
import(
    "net/http"
    "fmt"
    "log"
    "time"
    "strings"
)

func sayhello_cofox(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, "Hello Cofox!" + time.Now().String())
}
func main() {
    http.HandleFunc("/", sayhello_cofox)    //设置访问的路由
    err := http.ListenAndServe(":4000", nil)
    if err != nil {
        log.Fatal("ListenAndServe:", err)
    }
}

本例子编译后运行。然后打开浏览器,输入本地相应地址访问。
我实验的机器是这三个本地地址都可以访问

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

浏览器运行结果

Hello Cofox!2017-08-20 19:03:52.0956481 +0800 CST
点赞