gf icon indicating copy to clipboard operation
gf copied to clipboard

需求:希望规范路由自动生成的路径采用对象+方法名的形式

Open alaywn opened this issue 2 years ago • 3 comments

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 avatar Apr 12 '22 11:04 alaywn

@alaywn 规范路由推荐在g.Meta中定义path来区分不同的业务模块路由。即便可以支持结构体名称自动添加到路由中,如果结构体名称和路由前缀绑定的话,结构体和路由命名的灵活性也会降低,感觉这不是必要的约束。

gqcn avatar May 09 '22 14:05 gqcn

@gqcn 首先,目前是允许g.Meta中不设置path标签的; 其次,当不设置path标签时,gf会自动生成路由名称,这个自动生成的路由名称 = 【根路由名称/group名称/group.Bind对象的方法名称】。-----这里有个问题就是如果是不同group.Bind对象,但是方法名一样,会导致路由冲突。 但是,如果这个生成的路由名称 = 【根路由名称/group名称/group.Bind对象名称/group.Bind对象的方法名称】,即在【方法名称】前增加一个【对象名称】(不是*req结构体名称),那么对于大部分业务场景,其实就省去了设置path标签的硬编码了,所以这不应该是算约束,而是一种对普遍需求的支持,否则很多时候,纯粹就是为了区分不同对象的相同方法,被迫设置path。 再者,如果不想让gf自动生成路由,就自行设置path好了。或者,如果能支持定义规范路由也可以定义路由名称规则,就更完美了,比如定义成类似于{Object}/{Method}的方式。 ---- 这个开发难度我不太知道,所以只是说下个人想法。如果说的不对,请强哥指正。

alaywn avatar May 10 '22 22:05 alaywn

@alaywn 规范路由推荐在g.Meta中定义path来区分不同的业务模块路由。即便可以支持结构体名称自动添加到路由中,如果结构体名称和路由前缀绑定的话,结构体和路由命名的灵活性也会降低,感觉这不是必要的约束。

这个有考虑处理吗?

alaywn avatar Aug 08 '22 01:08 alaywn