golang從入門(mén)到精通,GinWeb開(kāi)發(fā),單元測(cè)試

2024-02-01    分類(lèi): 網(wǎng)站建設(shè)

Gin Web開(kāi)發(fā)

demo1/demo1.go源碼及解析

package mainimport ("github.com/gin-gonic/gin""log""net/http")func Index(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"id":101,"name":"張三",})}func main() {//gin.Default()返回一個(gè)引擎實(shí)例,該實(shí)例已經(jīng)連接了記錄器和恢復(fù)中間件。//gin.Default()實(shí)際上進(jìn)行了3步操作//1. debugPrintWARNINGDefault()//默認(rèn)的調(diào)試打印輸出//2. engine := New()//New返回一個(gè)新的空白引擎實(shí)例,不附帶任何中間件。//engine.Use(Logger(), Recovery())//engine.Use將一個(gè)全局中間件連接到路由器。//通過(guò)Use()連接的中間件將包含在每個(gè)請(qǐng)求的處理程序鏈中。//甚至404、405,靜態(tài)文件...//Logger()實(shí)例一個(gè)Logger中間件,它將把日志寫(xiě)到gin.DefaultWriter。//默認(rèn)情況下是gin.DefaultWriter = os.Stdout。//Recovery()返回一個(gè)中間件,它可以從任何panics(恐慌)中恢復(fù)過(guò)來(lái),如果有500,它會(huì)寫(xiě)入500。app := gin.Default()//GET是router.Handle("GET", path, handle)的路由快捷寫(xiě)法。app.GET("/", Index)//app.Run():啟用http.Server路由,并開(kāi)始偵聽(tīng)和服務(wù)HTTP請(qǐng)求。err := app.Run(":80")if err != nil {log.Panicln(err.Error())}}

demo1/demo1_test.go單元測(cè)試源碼及解析

packagemainimport ("github.com/gin-gonic/gin""io/ioutil""log""net/http/httptest""testing")func TestIndex(t *testing.T) {//設(shè)置log顯示信息格式//log.LstdFlags:表示標(biāo)準(zhǔn)輸出 Ldate | Ltime//log.Llongfile:表示輸出長(zhǎng)文件名和行號(hào)log.SetFlags(log.LstdFlags |log.Llongfile)//gin.Default()返回一個(gè)引擎實(shí)例,該實(shí)例已經(jīng)連接了記錄器和恢復(fù)中間件。//gin.Default()實(shí)際上進(jìn)行了3步操作//1.debugPrintWARNINGDefault()//默認(rèn)的調(diào)試打印輸出//2.engine := New()//New返回一個(gè)新的空白引擎實(shí)例,不附帶任何中間件。//engine.Use(Logger(), Recovery())//engine.Use將一個(gè)全局中間件連接到路由器。//通過(guò)Use()連接的中間件將包含在每個(gè)請(qǐng)求的處理程序鏈中。//甚至404、405,靜態(tài)文件...//Logger()實(shí)例一個(gè)Logger中間件,它將把日志寫(xiě)到gin.DefaultWriter。//默認(rèn)情況下是gin.DefaultWriter =os.Stdout。//Recovery()返回一個(gè)中間件,它可以從任何panics(恐慌)中恢復(fù)過(guò)來(lái),如果有500,它會(huì)寫(xiě)入500。router := gin.Default()//GET是router.Handle("GET",path, handle)的路由快捷寫(xiě)法。router.GET("/", Index)//func NewRequest(methodstring, targetstring, bodyio.Reader) *http.Request//對(duì)于http.Handler單元測(cè)試,可以使用NewRequest返回一個(gè)新的傳入服務(wù)器請(qǐng)求。//在測(cè)試的過(guò)程中,當(dāng)NewRequest發(fā)生錯(cuò)誤時(shí),會(huì)觸發(fā)panics(恐慌),//method:可以是POST、GET等,默認(rèn)的就是"GET"http://target:可以是路徑,也可以是絕對(duì)網(wǎng)址。如果目標(biāo)是絕對(duì)網(wǎng)址,則使用該網(wǎng)址的主機(jī)名。//body:可以是nil,如果body是*bytes.Reader類(lèi)型、*strings.Reader類(lèi)型、*bytes.Buffer,需要設(shè)置請(qǐng)求長(zhǎng)度。req := httptest.NewRequest("GET","/",nil)//func NewRecorder() *ResponseRecorder//httptest.NewRecorder()將返回一個(gè)初始化的ResponseRecorder.w := httptest.NewRecorder()//ServeHTTP通過(guò)參數(shù)w和req設(shè)置HTTP請(qǐng)求router.ServeHTTP(w, req)//w.Result():返回處理程序生成的響應(yīng)。//返回的響應(yīng)包括:狀態(tài)碼、標(biāo)題、正文和可選的尾部。result := w.Result()//result.Body表示響應(yīng)體。//讀取body字段時(shí),響應(yīng)body將按需流式傳輸。//如果網(wǎng)絡(luò)連接失敗或服務(wù)器終止響應(yīng),讀取body返回non-nil。//如果服務(wù)器用分塊傳輸,body將自動(dòng)刪除。bytes, err := ioutil.ReadAll(result.Body)iferr !=nil{log.Fatalln(err.Error())}log.Println(string(bytes))t.Log(string(bytes))}

非常感謝您讀完創(chuàng)新互聯(lián)的這篇文章:"golang從入門(mén)到精通,GinWeb開(kāi)發(fā),單元測(cè)試",僅為提供更多信息供用戶參考使用或?yàn)閷W(xué)習(xí)交流的方便。我們公司提供:網(wǎng)站建設(shè)、網(wǎng)站制作、官網(wǎng)建設(shè)、SEO優(yōu)化、小程序制作等服務(wù),歡迎聯(lián)系我們提供您的需求。

新聞名稱:golang從入門(mén)到精通,GinWeb開(kāi)發(fā),單元測(cè)試
網(wǎng)站路徑:http://www.bm7419.com/news37/316487.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司網(wǎng)站營(yíng)銷(xiāo)、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)