二、Gin路由

发布时间 2023-06-12 22:22:56作者: xiaohaoge

二、Gin路由

2.1、路由方法

路由系统支持任意方式的请求,如下的的方法用来提供对应的接受请求:

func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes
// 任意路由
func (group *RouterGroup) ANY(relativePath string, handlers ...HandlerFunc) IRoutes
// DELETE方法添加一个新的路由处理程序,它将使用DELETE方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes

// GET方法添加一个新的路由处理程序,它将使用GET方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes

// HEAD方法添加一个新的路由处理程序,它将使用HEAD方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes

// OPTIONS方法添加一个新的路由处理程序,它将使用OPTIONS方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes

// PATCH方法添加一个新的路由处理程序,它将使用PATCH方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes

// POST方法添加一个新的路由处理程序,它将使用POST方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes

// PUT方法添加一个新的路由处理程序,它将使用PUT方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes

// ANY方法添加一个新的路由处理程序,它将使用任何方法匹配路径
// relativePath: 路径的相对位置
// handlers: 处理程序函数
// 返回IRoutes接口
func (group *RouterGroup) ANY(relativePath string, handlers ...HandlerFunc) IRoutes

案例:

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
GET("/book") 路由处理针对 "/book" 路径的 GET 请求。
POST("/book") 路由处理针对 "/book" 路径的 POST 请求。
PUT("/book") 路由处理针对 "/book" 路径的 PUT 请求。
DELETE("/book") 路由处理针对 "/book" 路径的 DELETE 请求。
*/

func main() {
	r := gin.Default()
	// get请求
	r.GET("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "GET",
		})
	})

	// post请求
	r.POST("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "POST",
		})
	})

	// put请求
	r.PUT("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "PUT",
		})
	})

	// delete请求
	r.DELETE("/book", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "DELETE",
		})
	})

	// 路由匹配不成功
	r.NoRoute(func(c *gin.Context) {
		//http.StatusNotFound等同于404
		c.HTML(http.StatusNotFound, "404.html", nil)
		c.HTML(404, "404.html", nil)
	})
}

2.2、路由分组

路由分组用于将多个路由进行统一的处理

// 书籍相关的路由
bookRoute := r.Group("/books")
{
  bookRoute.GET("/", GetBook)
	bookRoute.POST("/add", AddBook)
	bookRoute.GET("/edit", EditBook)
	bookRoute.GET("/delete", DeleteBook)
}

// 出版社相关的路由
publishRoute := r.Group("/publish")
{
    publishRoute.GET("/", GetPublish)
	publishRoute.POST("/add", AddPublish)
	publishRoute.GET("/edit",EditPublish)
	publishRoute.GET("/delete",DeletePublish)
}