千恋*万花

  • 首页
  • 个人简历
  • 文章分类
    • 后端开发
    • 运维
    • 基础知识
    • 笔记
    • 工作运维记录
    • 随笔
    • 未分类文章
  • 管理
    • 后台管理
    • 登出
萌奈の笔记簿
分享我的努力,希望为你助力
  1. 首页
  2. 后端开发
  3. gin
  4. 正文

Gin使用路由组分类处理请求——Go Gin框架(五)

2020-10-04 2958点热度 0人点赞 0条评论

路由组功能

在实际项目开发中,均是模块化开发。同一模块的API接口一般会有相同的接口前缀。
例如,对于一个xx管理模块,会有“xx添加”、“xx删除”、“xx修改”、“xx查询”。
一个学生管理模块的API如下:

学生注册:/student/Add
学生删除:/student/Delete
学生修改:/student/Modify
学生查询:/student/Search

路由组

Gin框架为我们提供了路由组功能。

func group(engine *gin.Engine) {
    userGroup := engine.Group("/user")
    //visit /user/Add
    userGroup.POST("/Add", func(context *gin.Context) {
        fmt.Println("request route: ", context.FullPath())
        //业务处理逻辑
    })

    //visit /user/Delete/:id
    userGroup.POST("/Delete/:id", func(context *gin.Context) {
        fmt.Println("request route: ", context.FullPath())
        //业务处理逻辑
    })

    //visit /user/Modify/:id
    userGroup.POST("/Modify/:id", func(context *gin.Context) {
        fmt.Println("request route: ", context.FullPath())
        //业务处理逻辑
    })

    //visit /user/Search?id=
    userGroup.GET("/Search", func(context *gin.Context) {
        fmt.Println("request route: ", context.FullPath())
        //业务处理逻辑
    })
}
  • func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup:该函数用于定义一个group即一个公共的访问前缀。
    • relativePath string:相对路径,即公共前缀名。
    • handlers ...HandlerFunc:处理函数,由于是可变长度参数,故这里占时为空。

根据type RouterGroup struct的源码:

type RouterGroup struct {
    Handlers HandlersChain
    basePath string
    engine   *Engine
    root     bool
}

var _ IRouter = &RouterGroup{}

可以看到其实现了一个IRouter接口,该接口包含了GET、POST等方法,通过这些方法可以实现该路由组中的具体实现方法。

附:IRouter接口的声明

type IRoutes interface {
    Use(...HandlerFunc) IRoutes

    Handle(string, string, ...HandlerFunc) IRoutes
    Any(string, ...HandlerFunc) IRoutes
    GET(string, ...HandlerFunc) IRoutes
    POST(string, ...HandlerFunc) IRoutes
    DELETE(string, ...HandlerFunc) IRoutes
    PATCH(string, ...HandlerFunc) IRoutes
    PUT(string, ...HandlerFunc) IRoutes
    OPTIONS(string, ...HandlerFunc) IRoutes
    HEAD(string, ...HandlerFunc) IRoutes

    StaticFile(string, string) IRoutes
    Static(string, string) IRoutes
    StaticFS(string, http.FileSystem) IRoutes
}
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: Gin框架 Golang 心得 学习心得
最后更新:2022-10-27

初音萌奈

我是练习时长 一年半 的后端开发程序员 谢谢你参观我的博客! 本网站现已支持IPv6 ☞ 个人简历 ☜

点赞
< 上一篇
下一篇 >
文章目录
  • 路由组功能
  • 路由组
  • 附:IRouter接口的声明

COPYRIGHT © 2023 HatsuneMona ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

晋ICP备17007130号-4