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

middleware/selector #1244

Merged
merged 7 commits into from Jul 25, 2021
Merged

middleware/selector #1244

merged 7 commits into from Jul 25, 2021

Conversation

daemon365
Copy link
Member

@daemon365
Copy link
Member Author

 需要支持client不?

@shenqidebaozi
Copy link
Sponsor Member

要的

@daemon365
Copy link
Member Author

daemon365 commented Jul 25, 2021

添加了client的middleware 用断言的方式支持数组匹配了 如果继续用字符串,只是一个类型断言的影响 性能影响应该很小

@tonybase
Copy link
Member

tonybase commented Jul 25, 2021

http.Middleware(
    selector.Client(logging.Server(), authjwt.Server())
        .Prefix("/article.", "/login")
        .Regex("/article.{List*}"),
        .Path("/article.ListCategory"),
)

http.Middleware(
    selector.Server(logging.Server(), authjwt.Server())
        .Prefix("/article.", "/login")
        .Regex("/article.{List*}"),
        .Path("/article.ListCategory"),
)

type Builder strcut {
    client bool
    prefix []string
    regex []string
    path []string
}
func Client(ms ...middleware.Middleware) *Builder {
    return &Builder{client: true}
}
func (b *Builder) Prefix(prefix ...string) { b.prefix = prefix }
func (b *Builder) Regex(regex ...string) { b.regex = regex }
func (b *Builder) Path(path ...string) { b.path = path }

@daemon365
Copy link
Member Author

daemon365 commented Jul 25, 2021

现在的用法是:

http.Middleware(
		selector.Server().Regex("/hi/[0-9]+").Prefix("/hello/").Path("/hello/kratos", "/hi/kratos").Build(), 
		)

http.Middleware(
		selector.Server().NotRegex("/hi/[0-9]+").NotPrefix("/hello/").NotPath("/hello/kratos", "/hi/kratos").Build(), 
		)

现在的问题是正向匹配和反向匹配(比如:notPrefix ) 不能同时存在 目前做法是panic了 可能有些激进 可以默认正向匹配或者反向匹配

@tonybase
Copy link
Member

不然把反向去掉?必须明确地配置,也比较简单一些

@daemon365
Copy link
Member Author

但是有可能除了一两个路由都要用 这个中间件 那得配置多少个啊 你考虑一下吧!

@tonybase
Copy link
Member

prefix match还好的,配置好需要支持的前缀就好

@daemon365
Copy link
Member Author

好的 那我去掉

Copy link
Member

@tonybase tonybase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@daemon365
Copy link
Member Author

LGTM!

@tonybase tonybase merged commit 7977dea into go-kratos:main Jul 25, 2021
@daemon365 daemon365 deleted the dev-selector branch July 27, 2021 10:20
elvizlai pushed a commit to elvizlai/kratos that referenced this pull request Aug 2, 2021
* middleware selector client and support array
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants