GOLANG-笔记5-gin开发规范
Go语言Web框架基线版本
一.框架简介
此web框架已gin为核心,包含了mysq、redis、rabbitmq、log、es等基础组件。
此框架内dockerfile和makefile已适配中台的打镜像流程,一般情况下不需要对这两个文件进行修改。
1 | ├── controller //控制器 |
二.框架分层
2.1.路由层
框架采用强路由模式,支持路由群组、中间件模式,自带跨域组件并默认开启,路由文件存放在 route 目录下
2.2.控制器层
控制器存放在controller目录下,并区分版本,此层仅针对参数进行过滤处理,不处理相关业务。已集成swagger自动生成接口文档
2.3.业务层
业务层存放在service目录下,用来处理业务相关的逻辑
2.4.数据处理层
业务层存放在dao目录下,并根据下游不同服务放入不同目录下,此层仅处理数据,不处理业务相关逻辑
2.5.对象层
对象层存放在mode目录下,并根据对象的不同类型存放下级不同目录
2.6.中间件层
中间件层存放在middleware目录下,用以对同一分组或具有相同特征的路由进行全局业务处理
2.7.脚本层
脚本层存放在script目录下,用以处理非http类型的业务类型
2.8.常量层
常量定义存放在pconst目录下
三.整体流程
框架整体请求请求流程为route - middleware - controller - service - dao,控制器、业务、数据处理禁止逆向调用
四.请求示例
参考控制器下 log_platform.go 文件
五.中台服务间调用
gosdk使用和服务间调用有问题和建议可以联系联系基础架构部:张超
中台服务间调用通过gosdk进行调用,gosdk如何使用可以参考服务内的readme文档。
为了降低使用成本,我们对gosdk进行了一次封装requester包,并提供了一个案例account服务的接口封装。
【强烈建议】:对子服务(比如A)的调用封装成单独的包,并在gitlab.oneitfarm.com/ci123sdk group下创建项目A,将服务A的接口调用封装。这样其他项目(人)在接入A项目时,不需要再重复封装此部分内容。
简单来说就是每个服务在ci123sdk的group下创建项目,后续所有对此服务调用的封装都在此项目中,所有引用此服务的服务或应用,只需要引用此包进行开发,如果支持接口不全就在此项目中完善并打新的tag增加版本。
六.关于PR
有任何疑问或者建议,欢迎随时联系基础架构部:陶圣,也欢迎各位提交有价值的PR,也将纳入年终绩效考核一部分