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)
}