Documentation ¶
Overview ¶
Gin组件个人增强部分
Index ¶
- func Convert(f func(*Context) *Response, fc ...ContextOptionFunc) gin.HandlerFunc
- func ConvertMap(r *gin.RouterGroup, mp map[string]func(*Context) *Response, ...)
- func SetDefault(opt ...OptionFunc)
- type Config
- type Context
- func (c *Context) Bind(b any) error
- func (c *Context) Download(inf *DS) *Response
- func (c *Context) Error(err error) *Response
- func (c *Context) ErrorC(code int, err error) *Response
- func (c *Context) ErrorCf(code int, format string, a ...any) *Response
- func (c *Context) Errorf(format string, a ...any) *Response
- func (c *Context) Limit() int
- func (c *Context) Offset() int
- func (c *Context) Page() int
- func (c *Context) Success(data gin.H) *Response
- func (c *Context) SuccessAny(data any) *Response
- func (c *Context) SuccessEmpty() *Response
- func (c *Context) SuccessNoPage(count int, lis any, exter ...gin.H) *Response
- func (c *Context) SuccessPage(count int64, lis any, exter ...gin.H) *Response
- type ContextOptionFunc
- type DS
- type OptionFunc
- type Response
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Convert ¶
func Convert(f func(*Context) *Response, fc ...ContextOptionFunc) gin.HandlerFunc
结构转换,将controller返回的数据转换成gin框架所支持的输出形式 传入参数f,其格式为:func(*xginplus.Context) *xginplus.Response
f 处理该方法的函数标识 fc 针对此分组下的追加配置项
func ConvertMap ¶
func ConvertMap(r *gin.RouterGroup, mp map[string]func(*Context) *Response, fc ...ContextOptionFunc)
直接推送路由信息到router表中 支持使用gin框架支持的路由通配符等,但是不建议使用太多,因为此处不支持使用后缀方法进行追加效验
r gin的原生路由分组,用于插入配置的路由信息 mp 待推入的路由下标 mp.key 路由,使用:分割,第一个参数为请求方式,第二个参数为路由规则。 目前支持get(默认)/post/options/head/patch/delete/put/any 转化示例如: get:/index => r.GET("/index") get:/index/:abc => r.GET("/index/:abc") post:info/:name => r.POST("/info/:name") mp.val 处理函数 fc 针对此分组下的追加配置项
Types ¶
type Config ¶
type Config struct { SuccessData func(c any) (int, any) // 成功数据结构返回 SuccessPage func(c *Context, count int64, data any, ext gin.H) (int, any) // 成功的列表页返回的数据(此处传入 Context 的目的是为了方便扩展时的附加分页计算) ErrorData func(err error) (int, any) // 失败数据结构返回 ErrorDataCode func(code int, err error) (int, any) // 失败数据结构返回 Jitter bool // 是否启用网络抖动过滤 LimitOriginal int64 // limit传入多少时原样返回 }
插件配置项
type Context ¶
type Context struct { Jitter bool // 是否启用网络抖动过滤 JitterTime time.Duration // 缓存时间,默认1秒(此值会影响网络抖动的缓存时间) *gin.Context }
封装 gin.Context 结构体,用于提供增强功能
func (*Context) ErrorCf ¶
字符串基础错误信息值返回,等同于 c.Error(fmt.Errorf(xxx,xxx...))
code 自定义错误码 format 格式化字符串的指定格式 a 待追入的参数
func (*Context) Errorf ¶
字符串基础错误信息值返回,等同于 c.Error(fmt.Errorf(xxx,xxx...))
format 格式化字符串的指定格式 a 待追入的参数
func (*Context) SuccessEmpty ¶
返回成功数据 空结构 等同于 c.Success(gin.H{})
func (*Context) SuccessNoPage ¶ added in v0.3.34
无分页数据返回 内部实现为采用分页形式来进行实现具体数据
count 查询到的条数 lis 列表数据 exter 附加数据列表
type ContextOptionFunc ¶
type ContextOptionFunc func(c *Context)
func WithContextJitter ¶
func WithContextJitter(jit bool) ContextOptionFunc
设置当前接口启用/禁用抖动过滤
jit 是否启用抖动过滤
func WithContextJitterTime ¶
func WithContextJitterTime(ts time.Duration) ContextOptionFunc
设置缓存时间(默认缓存1秒) 此设置值会影响网络抖动的时间间隔 原始配置:1s内同样的结果只处理一次 修改时长后,会变成 指定时长内同样的请求结果只会处理一次 PS: 此处的缓存命中方式涉及到:请求方式、请求路径、客户端IP、客户端UA、客户端ContentType、客户端发送的POST原始参数
ts 指定时长
type DS ¶
type DS struct { UTF8BOM bool // 是否写入UTF-8的BOM头文件 Name string // 下载文件名 Body []byte // 下载内容流 ContentType string // 文件类型,默认为application/octet-stream }
下载描述结构体
type OptionFunc ¶
type OptionFunc func(c *Config)
func WithErrorData ¶
func WithErrorData(f func(err error) (int, any)) OptionFunc
错误数据格式化
f 处理错误数据的函数信息
func WithJitter ¶
func WithJitter(jit bool) OptionFunc
设置全接口启用/禁用抖动过滤 网络抖动的含义为同一秒内重复的请求 此处的抖动过滤的方案为: 1. 设置第一个请求的请求锁 2. 等待第一个请求的结果(若此期间进来第二个请求,第二个请求将会等待) 3. 第一个请求结果出来后,返回结果,并将结果进行缓存 4. 第n个请求进来后,直接读取缓存并返回
jit 是否启用抖动过滤
func WithLimitOriginal ¶ added in v0.3.34
func WithLimitOriginal(mits int64) OptionFunc
设置Limit查询全部的条件 即用户传多少的时候才会查询全部(指 c.Limit() 原样返回)
mits 传入值,当传入limit为此值时, c.Limit() 原样返回
func WithSuccessData ¶
func WithSuccessData(f func(c any) (int, any)) OptionFunc
一般成功数据处理结构
f 一般成功的处理函数