Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议在Register将callback注册到中间件的时候增加一个索引参数 #282

Open
bu-care opened this issue Mar 7, 2023 · 0 comments
Labels
enhancement New feature or request

Comments

@bu-care
Copy link

bu-care commented Mar 7, 2023

middleware 包的代码中,目前自定义的callback 函数是直接追加在 middlewareCallback 的最后,代码如下:

var middlewareCallback = []callback{
	hook.Do,
	field.Do,
	validator.Do,
}

// Register register callback into middleware
func Register(cb callback) {
	middlewareCallback = append(middlewareCallback, cb)
}

但有些情况需要自定义的callback 函数在 validator 之前执行(如结构体字段自定义了默认值,然后进行 validator 验证),这时自定义 middleware 不够灵活,建议增加一个索引参数,使得可以自定义 middlewareCallback 的执行顺序,如下:

var middlewareCallback = []callback{
	hook.Do,
	field.Do,
	validator.Do,
}

// Register register callback into middleware
func Register(cb callback, index int) {
	middlewareCallback = append(middlewareCallback[:index], append([]callback{cb}, middlewareCallback[index:]...)...)
}
@jiangz222 jiangz222 added the enhancement New feature or request label May 24, 2023
@jiangz222 jiangz222 modified the milestone: v1.1.6 May 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants