静态文件服务和路由详解2

本文介绍了如何在Gin框架中进行路由文件分组和控制器分组,以减少代码冗余和提高组织结构。通过创建不同的路由文件和控制器文件夹,将后台管理、接口和默认路由分开管理,并展示了如何配置路由引用控制器。此外,还讨论了控制器的结构体继承,以实现代码复用和更好的组织。
摘要由CSDN通过智能技术生成

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

接上:https://juejin.cn/post/7099435799468310536

1、Gin 路由文件 分组

如果路由都放在main.go中的话,项目很大的话就会非常的冗余,所以我们可以创建一个文件夹Routers。文件夹里面分别创建go文件用来创建路由,最后在main.go中引用。 按照习惯,我一般分为 后台管理路由、接口路由,默认路由三种。

1、新建后台管理路由 adminRoutes.go

```go package routes import ( "net/http" "github.com/gin-gonic/gin" )

func AdminRoutesInit(router *gin.Engine) { adminRouter := router.Group("/admin") //后台管理路由组 { adminRouter.GET("/index", func(c *gin.Context) { c.String(http.StatusOK, "主页") }) adminRouter.GET("/news", func(c *gin.Context) { c.String(http.StatusOK, "新闻") }) } } ``` 2、新建接口路由默认路由后台管理路由方法是一样的。

控制器分组

似乎对路由分组是显得没那么冗余了,但是如果控制器语句过于大而多或者项目很大的话,也只是减少了main.go的冗余,所以我们可以对控制器进行分组。

1、新建控制器文件夹。

我们之前对路由进行了分组,所以我们可以根据路由分组来创建控制器的分组。 可以分成后台管理控制器(controller/admin/.go)、接口控制器(controller/api/.go),默认控制器(controller/default/.go) 。这可以按照项目实际和个人习惯来分。 例: controller/admin/.go:

```go package admin import ( "net/http" "github.com/gin-gonic/gin" )

type NewsController struct {

} func (c NewsController) Index(c *gin.Context) { c.String(http.StatusOK, "后台首页") } ```

2、配置路由

我们把控制器分离了,就应该重新配置路由了

go package routes import ( "gin_demo/controller/admin" "net/http" "github.com/gin-gonic/gin" ) func AdminRoutesInit(router *gin.Engine) { adminRouter := router.Group("/admin") { adminRouter.GET("/user", admin.UserController{}.Index) adminRouter.GET("/user/add", admin.UserController{}.Add) adminRouter.GET("/news", admin.NewsController{}.Add) } } 发现了吗?我们只需把后面的方法替换成我们所在文件夹的控制器。

3、控制器的继承

我们使用了结构体来当接口编写控制器,因为结构体可以嵌套,那是不是控制器之间是可以继承的呢?

我们在上面 controller/admin/*.go:这段代码的结构体嵌套进TestController中:

go type TestController struct { NewsController } 这样就相当于TestController 继承了NewsController 就能使用NewsController里的方法了

比如: go package admin import ( "github.com/gin-gonic/gin" ) type NewsController struct { BaseController } func (a NewsController) Index1(c *gin.Context) { a.Index(c) }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值