Go語言使用HTTP包創(chuàng)建WEB服務(wù)器的方法
本文實(shí)例講述了Go語言使用HTTP包創(chuàng)建WEB服務(wù)器的方法。分享給大家供大家參考,具體如下:
在Golang中寫一個http web服務(wù)器大致是有兩種方法:
1 使用net包的net.Listen來對端口進(jìn)行監(jiān)聽
2 使用net/http包
這里是討論如何使用net/http包創(chuàng)建一個web服務(wù)器
net/http請求提供了HTTP客戶端和服務(wù)端的具體實(shí)現(xiàn)
http客戶端
先看到的是Get,Post,PostForm三個函數(shù)。這三個函數(shù)直接實(shí)現(xiàn)了http客戶端
"fmt"
"net/http"
"io/ioutil"
)
func main() {
response,_ := http.Get("http://www.baidu.com")
defer response.Body.Close()
body,_ := ioutil.ReadAll(response.Body)
fmt.Println(string(body))
}
除了使用這三個函數(shù)來建立一個簡單客戶端,還可以使用:
http.Client和http.NewRequest來模擬請求
import (
"net/http"
"io/ioutil"
"fmt"
)
func main() {
client := &http.Client{}
reqest, _ := http.NewRequest("GET", "http://www.baidu.com", nil)
reqest.Header.Set("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
reqest.Header.Set("Accept-Charset","GBK,utf-8;q=0.7,*;q=0.3")
reqest.Header.Set("Accept-Encoding","gzip,deflate,sdch")
reqest.Header.Set("Accept-Language","zh-CN,zh;q=0.8")
reqest.Header.Set("Cache-Control","max-age=0")
reqest.Header.Set("Connection","keep-alive")
response,_ := client.Do(reqest)
if response.StatusCode == 200 {
body, _ := ioutil.ReadAll(response.Body)
bodystr := string(body);
fmt.Println(bodystr)
}
}

如何創(chuàng)建web服務(wù)端?
http包封裝地非常bt,只需要兩行!!:
import (
"net/http"
)
func SayHello(w http.ResponseWriter, req *http.Request) {
w.Write([]byte("Hello"))
}
func main() {
http.HandleFunc("/hello", SayHello)
http.ListenAndServe(":8001", nil)
}
進(jìn)行端口的監(jiān)聽:http.ListenAndServe(":8001", nil)
注冊路徑處理函數(shù):http.HandleFunc("/hello", SayHello)
處理函數(shù):func SayHello(w http.ResponseWriter, req *http.Request)
golang服務(wù)器的效率怎樣呢?
看看這個帖子:
http://groups.google.com/group/golang-nuts/browse_thread/thread/cde2cc6278cefc90
node.js is 45% faster than golang(確實(shí)傷心)
golang服務(wù)端的效率確實(shí)沒有node.js高,幾乎是它的一半。但話說回來,如果一些并發(fā)量不是很大的site,還是可以使用golang做服務(wù)器的。
希望本文所述對大家Go語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
golang實(shí)現(xiàn)unicode轉(zhuǎn)換為字符串string的方法
這篇文章主要介紹了golang實(shí)現(xiàn)unicode轉(zhuǎn)換為字符串string的方法,實(shí)例分析了Go語言編碼轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
快速掌握Go 語言 HTTP 標(biāo)準(zhǔn)庫的實(shí)現(xiàn)方法
基于HTTP構(gòu)建的服務(wù)標(biāo)準(zhǔn)模型包括兩個端,客戶端(Client)和服務(wù)端(Server),這篇文章主要介紹了Go 語言HTTP標(biāo)準(zhǔn)庫的實(shí)現(xiàn)方法,需要的朋友可以參考下2022-07-07
Golang設(shè)計(jì)模式之外觀模式講解和代碼示例
外觀是一種結(jié)構(gòu)型設(shè)計(jì)模式, 能為復(fù)雜系統(tǒng)、 程序庫或框架提供一個簡單 (但有限) 的接口,這篇文章就給大家詳細(xì)介紹一下Golang的外觀模式,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-06
Go語言使用Timeout Context取消任務(wù)的實(shí)現(xiàn)
本文主要介紹了Go語言使用Timeout Context取消任務(wù)的實(shí)現(xiàn),包括基本的任務(wù)取消和控制HTTP客戶端請求的超時(shí),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
Golang環(huán)境變量設(shè)置和查看工具go env詳解
go env 是 Go 工具鏈中的一個命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對于理解、編譯和運(yùn)行 Golang 程序非常有用,本文就給大家簡單的介紹一下Golang環(huán)境變量設(shè)置和查看工具go env,需要的朋友可以參考下2023-07-07
Golang使用Gin框架實(shí)現(xiàn)HTTP響應(yīng)格式統(tǒng)一處理
在gin框架中,我們可以定義一個中間件來處理統(tǒng)一的HTTP響應(yīng)格式,本文主要為大家介紹了具體是怎么定義實(shí)現(xiàn)這樣的中間件的,感興趣的小伙伴可以了解一下2023-07-07
Go語言部署Kubernetes的實(shí)現(xiàn)示例
本文介紹了將Go應(yīng)用部署到Kubernetes的全過程,實(shí)現(xiàn)自動擴(kuò)展、滾動更新、健康檢查、監(jiān)控,并提供了最佳實(shí)踐和完整示例,具有一定的參考價(jià)值,感興趣的可以了解一下2026-05-05

