goft
  • gin脚手架使用文档
  • 所需环境
  • 建议的目录结构
  • 配置
  • 最简单的启动代码
  • 出错跟踪
  • 自定义错误展示
  • 覆盖系统内置异常处理
  • 路由
    • 路由写在一个文件里
    • 常规设置
  • 控制器
    • 控制器形式
    • 控制器方法
    • 控制器方法不想返回值
    • 输出JSON
    • 获取请求对象
  • 全局中间件
    • 基本定义
    • 注册中间件
    • 示例1:判断token参数
    • 示例2:修改响应内容
    • 跨域中间件
  • 路由级中间件
    • 基本定义
    • 示例:参数验证和业务分离
  • 依赖注入
    • 基本定义
    • 注册依赖配置
    • 基本使用
    • 注入Gorm和XOrm
  • 精简版领域驱动
    • 基本说明和概念
    • 基本分层
    • 领域层
    • 领域层之实体
    • 领域层之值对象
    • 领域层之仓储
    • 领域层之聚合
    • 领域服务层
    • 应用层(application)
    • 应用层之DTO
    • DTO和实体映射
    • 应用层之应用服务层
    • 代码落地
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 路由级中间件

基本定义

原生gin的中间件无法定位到具体的URL。改造后目前支持路由级的中间件,支持绑定具体的URL进行中间件执行

路由级中间件的定义和全局中间没有任何不同。

区别在于不要在main函数注册,而是在控制器注册

一段控制器的Build函数

func(this *IndexController) Build(goft *goft.Goft){
   goft.Handle("GET","/",this.Index).
      HandleWithFairing("GET","/test",
      this.IndexTest,
      middlewares.NewIndexTest())
 }

这个build函数定义了两个路由

1、/

2、/test

其中 我们在/test 这个路由上定义个 单独的中间件。注意全局中间件优先级最高,如果定义了路由中间件。两者都会执行

type IndexTest struct {

}
func NewIndexTest() *IndexTest {
   return &IndexTest{}
}
func(this *IndexTest) OnRequest(ctx *gin.Context) error{
   return nil
}
func(this *IndexTest) OnResponse(result interface{}) (interface{}, error){
   if m,ok:=result.(gin.H);ok{
      m["metadata"]="index test"
      return m,nil
   }
   return result,nil
}

上一页跨域中间件下一页示例:参数验证和业务分离

最后更新于4年前

这有帮助吗?