久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      golang如何封裝路由

      golang如何封裝路由

      封裝方式一、路由寫在 main函數(shù)中,數(shù)據(jù)庫初始連接放在 init() 函數(shù)中。、

      golang如何封裝路由

      首先看 main.go

      一個(gè)初始化函數(shù),初始化 db

      func init() {    db.Connect()    }

      第二,路由

      func main() {     // Configure    router := gin.Default()     // Set html render options    htmlRender := GinHTMLRender.New()    htmlRender.Debug = gin.IsDebugging()    htmlRender.Layout = "layouts/default"    // htmlRender.TemplatesDir = "templates/" // default    // htmlRender.Ext = ".html"               // default     // Tell gin to use our html render    router.HTMLRender = htmlRender.Create()     router.RedirectTrailingSlash = true    router.RedirectFixedPath = true     // Middlewares    router.Use(middlewares.Connect)    router.Use(middlewares.ErrorHandler)     // Statics    router.Static("/public", "./public")     // Routes     router.GET("/", func(c *gin.Context) {       c.Redirect(http.StatusMovedPermanently, "/articles")    })     // Articles    router.GET("/new", articles.New)    router.GET("/articles/:_id", articles.Edit)    router.GET("/articles", articles.List)    router.POST("/articles", articles.Create)    router.POST("/articles/:_id", articles.Update)    router.POST("/delete/articles/:_id", articles.Delete)     // Start listening    port := Port    if len(os.Getenv("PORT")) > 0 {       port = os.Getenv("PORT")    }    router.Run(":" + port) }

      封裝方式二、路由和 db單獨(dú)封裝到一個(gè)函數(shù)中,以傳參的形式將路由傳給另一個(gè)函數(shù)。

      golang如何封裝路由

      func SetUpServer() { 	r := gin.Default()  	// secret 相當(dāng)于簽名 	store, _ := sessions.NewRedisStore(10, "tcp", CONFIG.Redis.Host, CONFIG.Redis.Password, []byte(CONFIG.Server.Secret)) 	r.Use(sessions.Sessions("session", store))  	r.Use(gin.Recovery()) 	r.Use(Uniquify())  	r.LoadHTMLGlob("templates/*") 	r.Static("/static", "public/")  	SetUpRoutes(r)  	r.GET("/incr", func(c *gin.Context) { 		c.JSON(200, gin.H{"count": c.MustGet("key").(string)}) 	})  	// var port string  	r.Run(":" + CONFIG.Server.Port) }

      封裝三、將路由等封裝到 Server struct 中。對此 Server 創(chuàng)建一個(gè) new函數(shù),路由等相關(guān)內(nèi)容只包含在方法中。

      golang如何封裝路由

      type Server struct { 	Ws     *melody.Melody 	Routes *gin.Engine 	Games  []*Game }  func New() *Server { 	ws := melody.New() 	routes := gin.Default() 	games := make([]*Game, 0)  	return &Server{ 		Ws:     ws, 		Routes: routes, 		Games:  games, 	} }   ... ...   func (srv *Server) RoutesInit() { 	srv.Routes.GET("/jq.js", func(c *gin.Context) { 		http.ServeFile(c.Writer, c.Request, "html/jq.js") 	})  	srv.Routes.GET("/goyaniv.js", func(c *gin.Context) { 		http.ServeFile(c.Writer, c.Request, "html/goyaniv.js") 	}) 	srv.Routes.GET("/game/:name", func(c *gin.Context) { 		cookiekey, _ := c.Request.Cookie("goyanivkey") 		cookieid, _ := c.Request.Cookie("goyanivid") 		if cookieid == nil || cookiekey == nil { 			cookieid := CreateCookie("goyanivkey", GenerateUnique()) 			cookiekey := CreateCookie("goyanivid", GenerateUnique()) 			http.SetCookie(c.Writer, cookieid) 			http.SetCookie(c.Writer, cookiekey) 		} 		http.ServeFile(c.Writer, c.Request, "html/game.html") 	}) 	srv.Routes.GET("/gamedev/:name", func(c *gin.Context) { 		cookiekey, _ := c.Request.Cookie("goyanivkey") 		cookieid, _ := c.Request.Cookie("goyanivid") 		if cookieid == nil || cookiekey == nil { 			cookieid := CreateCookie("goyanivkey", GenerateUnique()) 			cookiekey := CreateCookie("goyanivid", GenerateUnique()) 			http.SetCookie(c.Writer, cookieid) 			http.SetCookie(c.Writer, cookiekey) 		} 		http.ServeFile(c.Writer, c.Request, "html/gamedev.html") 	})  	srv.Routes.GET("/game/:name/ws", func(c *gin.Context) { 		srv.Ws.HandleRequest(c.Writer, c.Request) 	})  	srv.Routes.GET("/gamedev/:name/ws", func(c *gin.Context) { 		srv.Ws.HandleRequest(c.Writer, c.Request) 	})  	srv.Ws.HandleMessage(func(s *melody.Session, msg []byte) { 		FireMessage(srv, s, msg) 	})  	srv.Ws.HandleDisconnect(func(s *melody.Session) { 		FireDisconnect(srv, s) 	})  	srv.Ws.HandleConnect(func(s *melody.Session) { 		FireConnect(srv, s) 	}) }  func (s *Server) Run() { 	s.RoutesInit() 	s.Routes.Run(":5000") }

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號