go 直接监听tcp 端口,做了nginx 的事,用go实现一个web 服务器非常简单,只需要调用http包的两个函数就可以
package main
import (
"net/http"
"fmt"
"strings"
"log"
)
func sayhelloName(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.Fprint(w,"Hello World!") //w的写入是输出到客户端的
}
func main(){
http.HandleFunc("/",sayhelloName) //设置访问的路由
err := http.ListenAndServe(":9090",nil) //设置监听的端口
if err!= nil{
log.Fatal("ListenAndServe: ",err)
}
}
- 使用go build 编译,生成可执行文件,用terminal运行
访问localhost:9090
,可以看到浏览器页面输出了”Hello World”
访问localhost:9090?url_long=1&url_long=2