[zeromicro/go-zero]修复 WithNotFoundHandler 和 WithNotAllowedHandler 不能共存的问题

2024-03-05 548 views
4

如果我定义了一个路由 GET /foo/bar 如果我访问 POST /foo/bar 按理来说,这个情况属于 notAllowed 如果我访问 GET /foo/bars 按理来说,这个情况属于 notFound 所以我访问时路由时,既可能出现 notAllowed, 也有可能会出现 notFound, 所以这两种情况可以同时存在 但是在代码中,两个方法都新建了 patRouter ,导致只会有一个 patRouter 生效,不合理

func WithNotFoundHandler(handler http.Handler) RunOption {
    rt := router.NewRouter() // 新建
    rt.SetNotFoundHandler(handler)
    return WithRouter(rt)
}

func WithNotAllowedHandler(handler http.Handler) RunOption {
    rt := router.NewRouter() // 新建
    rt.SetNotAllowedHandler(handler)
    return WithRouter(rt)
}

回答

0

没有人反馈一下吗?

8

这样改的问题是,如果有人同一个进程内起两个server,那么两个就会串了呢

0

所以我访问时路由时,既可能出现 notAllowed 这句啥意思?

5

我来想想怎么改哈

2

没考虑到这一层去

3

一起想想咋改哈

9

能否对 engine 对象做文章, 将 engine 对象加上 patRouter 结构, 在 newEngine() 方法这里进行初始化?

6

我也在想类似方法

7

@MasterJoyHunan 具体解决方法在 #875 里有描述,请查收。

4

Duplicate of #875