目标:有两个版本的api, v1和v2,希望在使用同一个服务器的情况下,两个版本的api能同时运行。
项目结构: router/controller/service/model文件夹
解决方案:
1.v2可以完全复制粘贴v1的所有文件夹,基于v1进行修改,最终得出如下文件结构
--src
--v1
--v1 route
--v1 controller
--v1 service
--v2
--v2 route
--v2 controller
--v2 service
--db
--config
这种方法的情况下会有大量的重复代码,感觉不是很好。但是这个是最直观的解决方案。很笨但是有效。
2.v2可以继承v1需要修改的部分文件,并覆盖其中的一部分函数
--src
--router
--controller
--user
--user_v2 extends user //导出这个新的controller给router v2
--service
--user
--user_v2
这种方式可以最小程度的重复代码,不过比如v2的时候我们改了user controller,v3的时候我们改了movie controller,最后改来改去就改乱了。而且router v2里面的大部分controller还是引用的v1 controller,只有user是新版本的controller.容易搞乱套。
所以,真心求教大佬们,如何设置文件结构,才能极其优雅的管理不同版本的api,可以有清晰的工程结构,同时,可以有最少的代码重复。可以提供与以上两种解决方式不同的任何方案。
网上真的真的搜不到好的解决方案,我想着,这互联网发展了30年了,咋这点东西都搜不到,很受打击。真心求教最佳实践。
结合了你说的那两种,推荐你用这个项目结构: