Gin 路由與路由文件分組的實現(xiàn)實例
路由
路由(Routing)是由一個 URL(或者叫路徑)和一個特定的 HTTP 方法(GET、POST等)組成的,涉及到應用如何響應客戶端對某個網(wǎng)站節(jié)點的訪問。
GET 請求傳值
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// localhost:8080/get?username=zhangsan&password=123
r.GET("/get", func(c *gin.Context) {
// 使用c.Query()獲取請求當中的參數(shù)
username := c.Query("username")
password := c.Query("password")
// 當請求路徑當中沒有帶有 age 參數(shù)時,使用默認值18
age := c.DefaultQuery("age", "18")
c.JSON(http.StatusOK, gin.H{
"msg": "Get...",
"username": username,
"password": password,
"age": age,
})
})
r.Run()
}
使用 Postman 進行測試


動態(tài)路由傳值
域名/user/20
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
r.GET("/user/:uid", func(c *gin.Context) {
// 使用c.Param()獲取請求當中的參數(shù)
uid := c.Param("uid")
c.JSON(http.StatusOK, gin.H{
"msg": "動態(tài)路由傳值...",
"uid": uid,
})
})
r.Run()
}
使用 Postman 進行測試

POST 請求傳值(獲取form表單數(shù)據(jù))
add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/toAdd" method="post">
用戶名 <input type="text" name="username">
密碼 <input type="password" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// 配置模板的文件
r.LoadHTMLGlob("templates/*")
// 輸入localhost:8080/add 跳轉到add.html頁面
r.GET("/add", func(c *gin.Context) {
c.HTML(200, "add.html", gin.H{})
})
r.POST("/toAdd", func(c *gin.Context) {
// 使用c.PostForm()獲取請求當中的參數(shù)
username := c.PostForm("username")
password := c.PostForm("password")
// 當表單當中沒有 age ,使用默認值18
age := c.DefaultPostForm("age", "18")
c.JSON(200, gin.H{
"username": username,
"password": password,
"age": age,
})
})
r.Run()
}


簡單的路由組
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
userRoutes := r.Group("/user")
{
userRoutes.GET("/add", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "userAdd...",
})
})
userRoutes.GET("/edit", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "userEdit...",
})
})
}
adminRoutes := r.Group("/admin")
{
userRoutes.GET("/add", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "adminAdd...",
})
})
userRoutes.GET("/edit", func(c *gin.Context) {
c.JSON(200, gin.H{
"msg": "adminEdit...",
})
})
}
r.Run()
}
使用 Postman 進行測試

Gin 路由文件分組
在項目的根目錄下新建 routes 文件夾,并新建 go 文件
DefaultRoutes.go
package routes
import "github.com/gin-gonic/gin"
func DefaultRoutesInit(r *gin.Engine) {
defaultRoutes := r.Group("/")
{
defaultRoutes.GET("/", func(c *gin.Context) {
c.String(200, "首頁")
})
defaultRoutes.GET("/news", func(c *gin.Context) {
c.String(200, "新聞")
})
}
}
AdminRoutes.go
package routes
import "github.com/gin-gonic/gin"
func AdminRoutesInit(r *gin.Engine) {
adminRoutes := r.Group("/admin")
{
adminRoutes.GET("/", func(c *gin.Context) {
c.String(200, "admin...")
})
adminRoutes.GET("/userlist", func(c *gin.Context) {
c.String(200, "admin---userlist")
})
adminRoutes.GET("/plist", func(c *gin.Context) {
c.String(200, "admin---plist")
})
}
}
ApiRoutes.go
package routes
import "github.com/gin-gonic/gin"
func ApiRoutesInit(r *gin.Engine) {
apiRoutes := r.Group("/api")
{
apiRoutes.GET("/", func(c *gin.Context) {
c.String(200, "我是一個api接口")
})
apiRoutes.GET("/userlist", func(c *gin.Context) {
c.String(200, "我是一個api接口---userlist")
})
apiRoutes.GET("/plist", func(c *gin.Context) {
c.String(200, "我是一個api接口---plist")
})
}
}
main.go
package main
import (
"Gin_demo/routes"
"fmt"
"github.com/gin-gonic/gin"
"html/template"
"time"
)
func main() {
r := gin.Default()
// 配置模板的文件
r.LoadHTMLGlob("templates/*")
// 配置靜態(tài)web目錄 第一個參數(shù)表示路由,第二個參數(shù)表示映射的路徑.
r.Static("/static", "./static")
routes.DefaultRoutesInit(r)
routes.ApiRoutesInit(r)
routes.AdminRoutesInit(r)
r.Run()
}
到此這篇關于Gin 路由與路由文件分組的實現(xiàn)實例的文章就介紹到這了,更多相關Gin 路由與路由文件分組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go語言reflect.TypeOf()和reflect.Type通過反射獲取類型信息
這篇文章主要介紹了Go語言reflect.TypeOf()和reflect.Type通過反射獲取類型信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Go語言web快速開發(fā)框架Gin的HttpRouter路由的使用
in框架內部使用了高性能的路由器庫httprouter,支持動態(tài)參數(shù)匹配和簡潔的接口,本文主要介紹了Go語言web快速開發(fā)框架Gin的HttpRouter路由的使用,感興趣的可以了解一下2025-03-03

