Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Gin 路由与路由文件分组

Gin 路由与路由文件分组的实现实例

作者:Koya1_c

本文主要介绍了Gin 路由与路由文件分组的实现实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

路由

路由(Routing)是由一个 URL(或者叫路径)和一个特定的 HTTP 方法(GET、POST等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。

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()获取请求当中的参数
		username := c.Query("username")
		password := c.Query("password")
		// 当请求路径当中没有带有 age 参数时,使用默认值18
		age := c.DefaultQuery("age", "18")
		c.JSON(http.StatusOK, gin.H{
			"msg":      "Get...",
			"username": username,
			"password": password,
			"age":      age,
		})
	})
	r.Run()
}

使用 Postman 进行测试

动态路由传值

域名/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()获取请求当中的参数
		uid := c.Param("uid")
		c.JSON(http.StatusOK, gin.H{
			"msg": "动态路由传值...",
			"uid": uid,
		})
	})
	r.Run()
}

使用 Postman 进行测试

POST 请求传值(获取form表单数据)

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()获取请求当中的参数
		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/*")
	// 配置静态web目录  第一个参数表示路由,第二个参数表示映射的路径.
	r.Static("/static", "./static")
	
	routes.DefaultRoutesInit(r)
	routes.ApiRoutesInit(r)
	routes.AdminRoutesInit(r)

	r.Run()
}

到此这篇关于Gin 路由与路由文件分组的实现实例的文章就介绍到这了,更多相关Gin 路由与路由文件分组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文