Golang开发web必须要给每一个控制器都要配置路由吗?

大家好,我从php尝试转go,我尝试了多个go框架,也尝试自己去开发一个简单的框架,但是这个路由配置问题似乎是无解,也就是每写一个控制器功能比如 /admin/user/add 或者 /admin/user/edit 这样的功能,都要把url路由写死配置下来,这样去一一对应映射的执行方法,而php这样的动态语言是完全可以自动获取url路径来自动对应相应的控制器的。

如果一个系统功能越来越多,可能会有成千上万的控制器方法,那就得写死成千上万条这样的数据,感觉这样非常不灵活,也不优雅。是我对go了解得不够深,还是确实是这样的呢?

各位大佬说说你们的看法呢,你们是怎么处理这个路由配置问题的呢?

最佳答案

其实PHP的laravel、tp6框架这些,也是要你手写路由绑定的了。当然,有些人可能还是比较喜欢自动根据URL访问控制器,或者在控制器中通过注解来注入实现路由,如果你实在想要这个效果,虽然我不是专业写GO得,但是我的PHP项目实现过类似的功能, 就是你用代码写一个初始化程序,在启动的时候,按一定规则去扫描控制器,或者注解,然后把扫描到的路由写入路由文件,这样也就实现了自动化注册路由了

1年前 评论
Codex (楼主) 1年前
讨论数量: 14

其实PHP的laravel、tp6框架这些,也是要你手写路由绑定的了。当然,有些人可能还是比较喜欢自动根据URL访问控制器,或者在控制器中通过注解来注入实现路由,如果你实在想要这个效果,虽然我不是专业写GO得,但是我的PHP项目实现过类似的功能, 就是你用代码写一个初始化程序,在启动的时候,按一定规则去扫描控制器,或者注解,然后把扫描到的路由写入路由文件,这样也就实现了自动化注册路由了

1年前 评论
Codex (楼主) 1年前

当你有成千上万的路由的时候,你这零散分布,没有集中管理才是致命的问题

1年前 评论

我反而觉得强路由更方便管理,我们现在项目没有强路由很难管理,乱七八糟的

1年前 评论

用文档方式去定义路由,集中生成go源码,就和php一样了 路由《GO 全栈框架封装》 控制器和请求方法《GO 全栈框架封装》

1年前 评论

还有更高端的操作,就是和php框架一样,解析注释生成路由文件,解析go源码仓库有go github.com/go-home-admin/toolset/t...

用php脚本解析go源码也行 github.com/go-home-admin/home-tool...

1年前 评论
Codex (楼主) 1年前
AB (作者) 1年前

可以试下我这个方法,主要就是要在每个controller文件写个init

1年前 评论
Codex (楼主) 1年前
海阔天空 (作者) 1年前
海阔天空 (作者) 1年前

应该是两种思路吧。 1 从代码中通过一定规则生成路由表。 2 通过提前设定的规则分析路由,然后找到对应文件代码中的函数。
但是对于静态语言go, 第二种方案实现起来或许比较困难

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!