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

2024-03-05 659 views
8

如果我定义了一个路由 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)
}

回答

4

没有人反馈一下吗?

5

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

9

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

4

我来想想怎么改哈

8

没考虑到这一层去

6

一起想想咋改哈

5

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

2

我也在想类似方法

1

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

7

Duplicate of #875