一起使用GO(golang) 來做一個後臺管理系統系列(2) 編寫路由控制包 router包

首先創建一個router 的包

編寫配置文件:

router.go文件

package routers

import (
	"fmt"
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
	"io/ioutil"
	"myProject/controllers"
	"myProject/db"
	"myProject/middleware/jwt"
	"myProject/routers/api"
)

func InitRouter() (router *gin.Engine) {
	router = gin.Default() //gin.New() //
	config := cors.DefaultConfig()
	config.AllowAllOrigins = true
	router.Use(cors.New(config))

	//攔截所有請求
	//router.Use(middleware())

	//log -------------------------------------------
	// Disable Console Color, you don't need console color when writing the logs to file.
	//gin.DisableConsoleColor()
	//// Logging to a file.
	//f, _ := os.Create("gin.log")
	//gin.DefaultWriter = io.MultiWriter(f)
	//-----------------------------------------------------------
	//渲染html頁面
	// 靜態資源加載,本例爲css,js以及資源圖片
	//router.Static("/myproject", "views/static")
	router.Static("/myproject", "views/static")
	fmt.Println("open", "http://127.0.0.1/myproject/")
	//router.Static("/myproject", "view/")
	//router.Static("static/*")

	//router.GET("/ping", func(c *gin.Context) {
	//	c.JSON(200, gin.H{
	//		"message": "pong",
	//	})
	//})

	/* 獲得授權Token */
	router.GET("/auth", api.GetAuth)

	t1 := controllers.UserC{Mgo: db.InitMongoDB2()}
	r1 := controllers.RoleC{Mgo: db.InitMongoDB2()}
	//use mongo db
	v1 := router.Group("/user/")
	{
		v1.POST("/login", t1.Login)
		v1.Use(jwt.JWT())
		{
			v1.POST("/insertuser", t1.Insertuser)
			v1.POST("/queryalluser", t1.Queryalluser)
			v1.GET("/getalluser", t1.Getalluser)
			v1.GET("/QueryByUsername", t1.QueryByUsername)
			v1.POST("/updateuser", t1.Updateuser)
			v1.POST("/deluser", t1.Deluser)
			v1.GET("/getroles", r1.GetRoles)
		}
	}
	v2 := router.Group("/file")
	{
		v2.POST("/uploadfile", controllers.Uploadfile)
		v2.GET("/downloadfile", controllers.Downloadfile)
		v2.GET("/readfile", controllers.Readfile)
	}

	//use mysql db
	v3 := router.Group("/userinfo")
	{
		v3.GET("/getuserinfo", controllers.GetUserInfo)
		v3.POST("/updateuser", controllers.UpdateUser)
	}

	t := controllers.TestC{Mgo: db.InitMongoDB2()}
	test := router.Group("/test/")
	{
		test.GET("/test1", t.TestInsert)
		test.GET("/test2", t.Test2)
		test.GET("/test3", t.Test3)
		test.GET("/test4", t.Test4)
		test.GET("/test5", t.Test5)
		//test.GET("/test6", t.Test6)
		//test.POST("/test7", t.Test7)
	}

	return
}

func middleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		body := c.Request.Body
		x, _ := ioutil.ReadAll(body)
		fmt.Println("postBody:", string(x))
		c.Next()
		return
	}
}

下面說下代碼的功能部分:

其中的

 1.  jwt 部分是我個人根據一些實列封裝的了jwt鑑權部分

 2.  db包是初始化了一些數據庫的鏈接類的封裝操作

 3.  router group根據業務的模塊可以劃分不同的模塊,比如用戶模塊

      這裏演示了像增加、刪除、修改、查詢、條件檢索等等。

      這個會在後面,越來越完善的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章