2024-02-01 分類: 網(wǎng)站建設(shè)
Gin Web開發(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()返回一個引擎實例,該實例已經(jīng)連接了記錄器和恢復(fù)中間件。//gin.Default()實際上進行了3步操作//1. debugPrintWARNINGDefault()//默認(rèn)的調(diào)試打印輸出//2. engine := New()//New返回一個新的空白引擎實例,不附帶任何中間件。//engine.Use(Logger(), Recovery())//engine.Use將一個全局中間件連接到路由器。//通過Use()連接的中間件將包含在每個請求的處理程序鏈中。//甚至404、405,靜態(tài)文件...//Logger()實例一個Logger中間件,它將把日志寫到gin.DefaultWriter。//默認(rèn)情況下是gin.DefaultWriter = os.Stdout。//Recovery()返回一個中間件,它可以從任何panics(恐慌)中恢復(fù)過來,如果有500,它會寫入500。app := gin.Default()//GET是router.Handle("GET", path, handle)的路由快捷寫法。app.GET("/", Index)//app.Run():啟用http.Server路由,并開始偵聽和服務(wù)HTTP請求。err := app.Run(":80")if err != nil {log.Panicln(err.Error())}}demo1/demo1_test.go單元測試源碼及解析
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:表示輸出長文件名和行號log.SetFlags(log.LstdFlags |log.Llongfile)//gin.Default()返回一個引擎實例,該實例已經(jīng)連接了記錄器和恢復(fù)中間件。//gin.Default()實際上進行了3步操作//1.debugPrintWARNINGDefault()//默認(rèn)的調(diào)試打印輸出//2.engine := New()//New返回一個新的空白引擎實例,不附帶任何中間件。//engine.Use(Logger(), Recovery())//engine.Use將一個全局中間件連接到路由器。//通過Use()連接的中間件將包含在每個請求的處理程序鏈中。//甚至404、405,靜態(tài)文件...//Logger()實例一個Logger中間件,它將把日志寫到gin.DefaultWriter。//默認(rèn)情況下是gin.DefaultWriter =os.Stdout。//Recovery()返回一個中間件,它可以從任何panics(恐慌)中恢復(fù)過來,如果有500,它會寫入500。router := gin.Default()//GET是router.Handle("GET",path, handle)的路由快捷寫法。router.GET("/", Index)//func NewRequest(methodstring, targetstring, bodyio.Reader) *http.Request//對于http.Handler單元測試,可以使用NewRequest返回一個新的傳入服務(wù)器請求。//在測試的過程中,當(dāng)NewRequest發(fā)生錯誤時,會觸發(fā)panics(恐慌),//method:可以是POST、GET等,默認(rèn)的就是"GET"http://target:可以是路徑,也可以是絕對網(wǎng)址。如果目標(biāo)是絕對網(wǎng)址,則使用該網(wǎng)址的主機名。//body:可以是nil,如果body是*bytes.Reader類型、*strings.Reader類型、*bytes.Buffer,需要設(shè)置請求長度。req := httptest.NewRequest("GET","/",nil)//func NewRecorder() *ResponseRecorder//httptest.NewRecorder()將返回一個初始化的ResponseRecorder.w := httptest.NewRecorder()//ServeHTTP通過參數(shù)w和req設(shè)置HTTP請求router.ServeHTTP(w, req)//w.Result():返回處理程序生成的響應(yīng)。//返回的響應(yīng)包括:狀態(tài)碼、標(biāo)題、正文和可選的尾部。result := w.Result()//result.Body表示響應(yīng)體。//讀取body字段時,響應(yīng)body將按需流式傳輸。//如果網(wǎng)絡(luò)連接失敗或服務(wù)器終止響應(yīng),讀取body返回non-nil。//如果服務(wù)器用分塊傳輸,body將自動刪除。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從入門到精通,GinWeb開發(fā),單元測試",僅為提供更多信息供用戶參考使用或為學(xué)習(xí)交流的方便。我們公司提供:網(wǎng)站建設(shè)、網(wǎng)站制作、官網(wǎng)建設(shè)、SEO優(yōu)化、小程序制作等服務(wù),歡迎聯(lián)系我們提供您的需求。
新聞名稱:golang從入門到精通,GinWeb開發(fā),單元測試
網(wǎng)站路徑:http://www.rwnh.cn/news37/316487.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計公司、網(wǎng)站營銷、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容