【Gin】Gin 路由与路由文件分组

文章目录

      • 路由
      • GET 请求传值
      • 动态路由传值
      • POST 请求传值(获取form表单数据)
      • 简单的路由组
      • Gin 路由文件分组

作者的 Gin 框架学习是根据 B站视频 Gin教程_Golang框架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 进行测试

【Gin】Gin 路由与路由文件分组_第1张图片

【Gin】Gin 路由与路由文件分组_第2张图片

动态路由传值

域名/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 进行测试

【Gin】Gin 路由与路由文件分组_第3张图片

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

add.html

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<form action="/toAdd" method="post">
  用户名 <input type="text" name="username"><br><br>
  密码 <input type="password" name="password"><br><br>
  <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()
}

【Gin】Gin 路由与路由文件分组_第4张图片
【Gin】Gin 路由与路由文件分组_第5张图片

简单的路由组

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】Gin 路由与路由文件分组_第6张图片

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,postman,golang)