提示:本系列文章适合对Go有持续冲动的读者
初探golang web服务
golang web开发是其一项重要且有竞争力的应用,本小结来看看再golang中怎么创建一个简单的web服务。
net/http
net/http
package main
import (
	//"log"
	"fmt"
	"net/http"
)
func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe("localhost:6677", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "url.path=%q\n", r.URL.Path)  //输出到文件流
}
http.HandleFunc
http.ListenAndServe
handlerhttp.ResponseWriterhttp.Request
[root@VM-0-5-centos ~]# curl localhost:6677/123
url.path="/123"
- 我们通过handler函数来对访问url做访问数计算。
 
sync
package main
import (
	//"log"
	"fmt"
	"net/http"
	"sync"
)
var count int
var mutex sync.Mutex //使用互斥锁
func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe("localhost:6677", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
	mutex.Lock()
	count++
	mutex.Unlock()
	fmt.Fprintf(w, "request url.path:%q has %d times\n", r.URL.Path, count)
}
我们来看看请求结果如下:
[root@VM-0-5-centos ~]# curl localhost:6677/golang
request url.path:"/golang" has 1 times
[root@VM-0-5-centos ~]# curl localhost:6677/golang
request url.path:"/golang" has 2 times
[root@VM-0-5-centos ~]# curl localhost:6677/golang
request url.path:"/golang" has 3 times
http.RequestURL.PathMethodProtohandler
package main
import (
	//"log"
	"fmt"
	"net/http"
	"sync"
)
var count int
var mutex sync.Mutex //使用互斥锁
func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe("localhost:6677", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "%s,%s,%s,\n", r.Method, r.URL, r.Proto)
	fmt.Fprintf(w, "host:%q\nremoteaddr:%q\n", r.Host, r.RemoteAddr)
	for k, v := range r.Header {
		fmt.Fprintf(w, "Header[%q]:%q\n", k, v)
	}
	for k, v := range r.Form {
		fmt.Fprintf(w, "Form[%q]:%q\n", k, v)
	}
}
创建表单接受后输出如下:
//output
GET,/helloweb,HTTP/1.1,
host:"localhost:6677"
remoteaddr:"127.0.0.1:58088"
Header["User-Agent"]:["curl/7.29.0"]
Header["Accept"]:["*/*"]
Form[parm1]:hello
Form[parm2]:web
本次简单的了解了一下golang web服务,也是初尝章节结束。接下来会比较深入的学习golang的精彩细节与精华。
文章有不足的地方欢迎在评论区指出。
欢迎收藏、点赞、提问。关注顶级饮水机管理员,除了管烧热水,有时还做点别的。