下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第使用Golang搭建web服務(wù)的實(shí)現(xiàn)步驟如何用golang搭建一個(gè)web服務(wù)呢?菜鳥(niǎo)官網(wǎng)的goweb編程教程已經(jīng)介紹了web服務(wù)器的工作原理,這里就不贅述了。
我們先看個(gè)例子:http.go
packagemain
import(
"fmt"
"io"
"log"
"net/http"
funcmain(){
http.HandleFunc("/test",doRequest)//設(shè)置訪問(wèn)路由
err:=http.ListenAndServe(":8000",nil)//設(shè)置監(jiān)聽(tīng)的端口
iferr!=nil{
log.Fatal("ListenAndServe:",err)
funcdoRequest(whttp.ResponseWriter,r*http.Request){
r.ParseForm()//解析url傳遞的參數(shù),對(duì)于POST則解析響應(yīng)包的主體(requestbody)
//fmt.Println(r.Form)//這些信息是輸出到服務(wù)器端的打印信息
//fmt.Println("path",r.URL.Path)
//fmt.Println("scheme",r.URL.Scheme)
//fork,v:=ranger.Form{
//fmt.Println("key:",k)
//fmt.Println("value:",strings.Join(v,""))
fmt.Fprintf(w,"servicestart...")//這個(gè)寫(xiě)入到w的是輸出到客戶端的也可以用下面的io.WriteString對(duì)象
//注意:如果沒(méi)有調(diào)用ParseForm方法,下面無(wú)法獲取表單的數(shù)據(jù)
//query:=r.URL.Query()
varuidstring//初始化定義變量
ifr.Method=="GET"{
uid=r.FormValue("uid")
}elseifr.Method=="POST"{
uid=r.PostFormValue("uid")
io.WriteString(w,"uid="+uid)
}
gorunhttp.go命令運(yùn)行程序。
之后在瀏覽器中輸入地址::8000/testuid=10086,看下結(jié)果。
在main函數(shù)中,我們從net/http包中調(diào)用了一個(gè)http.HandleFucn函數(shù)來(lái)注冊(cè)一個(gè)處理函數(shù)
這個(gè)函數(shù)接受兩個(gè)參數(shù)。第一個(gè)是字符串,這個(gè)就是進(jìn)行路由匹配,我這里是/test路由。第二個(gè)參數(shù)是一個(gè)func(ResponseWriter,Request)的簽名。
我們的doRequest函數(shù)就是這樣的簽名。下一行中的http.ListenAndServe(:8000,nil),表示監(jiān)聽(tīng)localhost的8000端口,暫時(shí)忽略掉nil。
在doRequest函數(shù)中我們有兩個(gè)參數(shù),一個(gè)是http.ResponseWriter類型的。它類似響應(yīng)流,實(shí)際上是一個(gè)接口類型。
第二個(gè)是http.Request類型,類似于HTTP請(qǐng)求。我們不必使用所有的參數(shù),如果只是簡(jiǎn)單的輸出,那么我們只需要使用http.ResponseWriter,io.WriteString,將會(huì)把輸出流寫(xiě)入數(shù)據(jù)。
我們?cè)偕晕⒏南?,大家?qǐng)注意修改的部分(這里我們只調(diào)整main函數(shù)部分代碼)
funcmain(){
mux:=http.NewServeMux()
mux.HandleFunc("/test",doRequest)
err:=http.ListenAndServe(":8000",mux)//設(shè)置監(jiān)聽(tīng)的端口
iferr!=nil{
log.Fatal("ListenAndServe:",err)
}
這個(gè)例子中,我們不再在函數(shù)http.ListenAndServe使用nil了。這個(gè)例子跟上面的例子其實(shí)是一樣的。使用http注冊(cè)hanlder函數(shù)模式就是用的ServeMux。
我們?cè)僬{(diào)整下看下更復(fù)雜的例子:
packagemain
import(
"fmt"
"io"
"log"
"net/http"
varmuxmap[string]func(http.ResponseWriter,*http.Request)
funcmain(){
server:=http.Server{
Addr:":8000",
Handler:doHandler{},
mux=make(map[string]func(http.ResponseWriter,*http.Request))
mux["/test"]=doRequest
err:=server.ListenAndServe()
iferr!=nil{
log.Fatal("ListenAndServe:",err)
typedoHandlerstruct{}
func(*doHandler)ServeHTTP(whttp.ResponseWriter,r*http.Request){
ifres,ok:=mux[r.URL.String()];ok{
res(w,r)
return
io.WriteString(w,"urlparams:"+r.URL.String())
funcdoRequest(whttp.ResponseWriter,r*http.Request){
r.ParseForm()//解析url傳遞的參數(shù),對(duì)于POST則解析響應(yīng)包的主體(requestbody)
fmt.Fpri
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健身教練會(huì)員增肌減脂效果績(jī)效評(píng)定表
- 員工遵守法律法規(guī)及規(guī)章承諾書(shū)(5篇)
- 功能運(yùn)動(dòng)器材認(rèn)證承諾書(shū)范文6篇
- 農(nóng)業(yè)生物技術(shù)應(yīng)用與效益分享協(xié)議
- 達(dá)利園知識(shí)考試題及答案
- 醫(yī)學(xué)影像儀器試題及答案
- 政府法律法規(guī)試題及答案
- 合同執(zhí)行信譽(yù)承諾函6篇范文
- 廣告創(chuàng)意設(shè)計(jì)師作品創(chuàng)新度績(jī)效評(píng)定表
- 銷售團(tuán)隊(duì)運(yùn)營(yíng)數(shù)據(jù)報(bào)表模板
- 2025年農(nóng)村人居環(huán)境五年評(píng)估報(bào)告
- 浙江省杭州市拱墅區(qū)2024-2025學(xué)年四年級(jí)上冊(cè)期末考試數(shù)學(xué)試卷(含答案)
- 房屋過(guò)戶給子女的協(xié)議書(shū)的范文
- 超聲振動(dòng)珩磨裝置的總體設(shè)計(jì)
- 新媒體藝術(shù)的發(fā)展歷程及藝術(shù)特征
- 醫(yī)保違規(guī)行為分類培訓(xùn)課件
- 講課學(xué)生數(shù)學(xué)學(xué)習(xí)成就
- 醫(yī)療器械法規(guī)對(duì)互聯(lián)網(wǎng)銷售的限制
- 西葫蘆栽培技術(shù)要點(diǎn)
- 系桿拱橋系桿預(yù)應(yīng)力施工控制要點(diǎn)
- 三亞市海棠灣椰子洲島土地價(jià)格咨詢報(bào)告樣本及三洲工程造價(jià)咨詢有限公司管理制度
評(píng)論
0/150
提交評(píng)論