xginplus

package
v0.3.34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2024 License: BSD-3-Clause-Clear Imports: 8 Imported by: 0

Documentation

Overview

Gin组件个人增强部分

Index

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		针对此分组下的追加配置项

func SetDefault

func SetDefault(opt ...OptionFunc)

设置默认配置项

opt	配置项选项,WithXXX选项

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 To

func To(c *gin.Context) *Context

将 gin 的 Context 结构体转化为本框架的 Context 结构体

func (*Context) Bind

func (c *Context) Bind(b any) error

获取请求中的参数

b	待获取的参数结构体信息

func (*Context) Download

func (c *Context) Download(inf *DS) *Response

下载文件

inf	待下载的文件结构信息

func (*Context) Error

func (c *Context) Error(err error) *Response

基础错误信息值返回

err	错误信息

func (*Context) ErrorC

func (c *Context) ErrorC(code int, err error) *Response

基础错误信息值返回

code	自定义错误码
err		错误字符串

func (*Context) ErrorCf

func (c *Context) ErrorCf(code int, format string, a ...any) *Response

字符串基础错误信息值返回,等同于 c.Error(fmt.Errorf(xxx,xxx...))

code	自定义错误码
format	格式化字符串的指定格式
a		待追入的参数

func (*Context) Errorf

func (c *Context) Errorf(format string, a ...any) *Response

字符串基础错误信息值返回,等同于 c.Error(fmt.Errorf(xxx,xxx...))

format	格式化字符串的指定格式
a		待追入的参数

func (*Context) Limit

func (c *Context) Limit() int

获取每页查询条数

func (*Context) Offset

func (c *Context) Offset() int

获取跳过条数

func (*Context) Page

func (c *Context) Page() int

获取当前页码

func (*Context) Success

func (c *Context) Success(data gin.H) *Response

返回成功数据

data	待返回的数据结构

func (*Context) SuccessAny

func (c *Context) SuccessAny(data any) *Response

返回成功数据

data	待返回的数据结构

func (*Context) SuccessEmpty

func (c *Context) SuccessEmpty() *Response

返回成功数据 空结构 等同于 c.Success(gin.H{})

func (*Context) SuccessNoPage added in v0.3.34

func (c *Context) SuccessNoPage(count int, lis any, exter ...gin.H) *Response

无分页数据返回 内部实现为采用分页形式来进行实现具体数据

count	查询到的条数
lis		列表数据
exter	附加数据列表

func (*Context) SuccessPage added in v0.3.34

func (c *Context) SuccessPage(count int64, lis any, exter ...gin.H) *Response

分页返回

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	一般成功的处理函数

func WithSuccessPage

func WithSuccessPage(f func(c *Context, count int64, data any, ext gin.H) (int, any)) OptionFunc

分页成功数据处理结构

f	一般成功的处理函数

type Response

type Response struct {
	// contains filtered or unexported fields
}

返回给前端的数据信息

func (*Response) GetCodeData

func (c *Response) GetCodeData() (int, any)

获取返回的Code代码和数据信息

func (*Response) GetData

func (c *Response) GetData() any

获取返回的数据信息

Directories

Path Synopsis
长连接相关依赖支持 继承外部 xginplus 组件
长连接相关依赖支持 继承外部 xginplus 组件

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL