隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的的人進入了IT行業(yè),那么使用golang語言如何封裝路由?你們知道嗎?為了讓大家更加了解golang語言,小編給大家總結(jié)了以下內(nèi)容,一起往下看吧。
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比克州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式克州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋克州地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。封裝方式一、路由寫在 main函數(shù)中,數(shù)據(jù)庫初始連接放在 init() 函數(shù)中。、
首先看 main.go
一個初始化函數(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單獨封裝到一個函數(shù)中,以傳參的形式將路由傳給另一個函數(shù)。
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)建一個 new函數(shù),路由等相關(guān)內(nèi)容只包含在方法中。
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") }
關(guān)于使用golang語言如何封裝路由就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過小編可以保證其準(zhǔn)確性是絕對沒問題的。希望以上內(nèi)容可以對大家有一定的參考價值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。
網(wǎng)站名稱:使用golang語言如何封裝路由-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://jinyejixie.com/article38/pehpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制網(wǎng)站、做網(wǎng)站、ChatGPT、網(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)容