gf
gf copied to clipboard
需求:希望规范路由自动生成的路径采用对象+方法名的形式
1. What version of Go
and system type/arch are you using?
go 1.18
2. What version of GoFrame
are you using?
gf 2.0.6
3. Can this issue be re-produced with the latest release?
YES
4. What did you do?
需求,非bug
5. What did you expect to see?
规范路由*req结构体中,g.Meta 的不设置path标签时,自动注册的路由格式,希望是**“对象/方法名/”**
6. What did you see instead?
规范路由*req结构体中,g.Meta 的不设置path标签时,自动注册的路由格式,目前是**“方法名/”**,这样不同对象相同的方法名会导致路由冲突!
@alaywn 规范路由推荐在g.Meta
中定义path
来区分不同的业务模块路由。即便可以支持结构体名称自动添加到路由中,如果结构体名称和路由前缀绑定的话,结构体和路由命名的灵活性也会降低,感觉这不是必要的约束。
@gqcn 首先,目前是允许g.Meta
中不设置path
标签的;
其次,当不设置path
标签时,gf会自动生成路由名称,这个自动生成的路由名称 = 【根路由名称/group
名称/group.Bind
对象的方法名称】。-----这里有个问题就是如果是不同group.Bind
对象,但是方法名一样,会导致路由冲突。
但是,如果这个生成的路由名称 = 【根路由名称/group名称/group.Bind
对象名称/group.Bind
对象的方法名称】,即在【方法名称】前增加一个【对象名称】(不是*req
结构体名称),那么对于大部分业务场景,其实就省去了设置path
标签的硬编码了,所以这不应该是算约束,而是一种对普遍需求的支持,否则很多时候,纯粹就是为了区分不同对象的相同方法,被迫设置path。
再者,如果不想让gf自动生成路由,就自行设置path
好了。或者,如果能支持定义规范路由也可以定义路由名称规则,就更完美了,比如定义成类似于{Object}/{Method}
的方式。
---- 这个开发难度我不太知道,所以只是说下个人想法。如果说的不对,请强哥指正。
@alaywn 规范路由推荐在
g.Meta
中定义path
来区分不同的业务模块路由。即便可以支持结构体名称自动添加到路由中,如果结构体名称和路由前缀绑定的话,结构体和路由命名的灵活性也会降低,感觉这不是必要的约束。
这个有考虑处理吗?