欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用golang語(yǔ)言如何封裝路由-創(chuàng)新互聯(lián)

隨著互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的的人進(jìn)入了IT行業(yè),那么使用golang語(yǔ)言如何封裝路由?你們知道嗎?為了讓大家更加了解golang語(yǔ)言,小編給大家總結(jié)了以下內(nèi)容,一起往下看吧。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比克州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式克州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋克州地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

使用golang語(yǔ)言如何封裝路由

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

使用golang語(yǔ)言如何封裝路由

首先看 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語(yǔ)言如何封裝路由

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 中。對(duì)此 Server 創(chuàng)建一個(gè) new函數(shù),路由等相關(guān)內(nèi)容只包含在方法中。

使用golang語(yǔ)言如何封裝路由

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語(yǔ)言如何封裝路由就分享到這里了,當(dāng)然并不止以上和大家分析的辦法,不過(guò)小編可以保證其準(zhǔn)確性是絕對(duì)沒(méi)問(wèn)題的。希望以上內(nèi)容可以對(duì)大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

網(wǎng)站名稱:使用golang語(yǔ)言如何封裝路由-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://www.aaarwkj.com/article38/pehpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制網(wǎng)站、做網(wǎng)站、ChatGPT網(wǎng)站維護(hù)、用戶體驗(yàn)

廣告

聲明:本網(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)
久久婷婷av一区二区三区| 免费直接在线看亚洲黄色| 午夜激情毛片在线观看| 精品人妻人伦一区二区三区| 欧美亚洲另类色自拍偷拍| 未满18十八禁止观看| 91看看午夜福利视频| 精品国产一区二区三区大| 欧美视频免费一级黄片| 青草免费在线播放视频| 日韩精品少妇一区二区在线看 | 久久精品国产免费夜夜嗨 | 91高清国产最新地址| 国产黄色看三级91大片| 亚洲精品网址一区二区| 99精品午夜福利在线| 欧美日韩国产看片一区二区| 东京热一精品无码av| 精品一区二区三区在线观看国产| 丝袜美腿精尽福利视频网址大全| 免费在线观看美女av| 国产激情视频一区二区三区| 乱色视频中文字幕在线着| 黄色污网站在线观看免费| 日韩精品欧美精品视频一区| 亚洲综合偷拍欧美一区日韩| 亚洲精品国产精品粉嫩| 日韩精品少妇一区二区| 国内传媒视频免费观看| 国产精品视频一区二区久久| 国产传媒在线免费播放| 日本色电影一区二区三区| 亚洲美女高潮久久久久久久久 | 麻豆视传媒短视频网站| 日韩中文字幕精品一区| 亚洲欧美一区日韩尤物| 日韩欧美亚洲国产每日更新| 女厕所偷拍一区二区三区| 91久久亚洲综合精品成人| 久久夜色精品亚洲国产| 色婷婷丝袜一区网站|