Go Web开发规范

题外话,从阿里巴巴的JAVA开发手册的灵感来的。golang web开发国内也有一些规范了,这个只是我自己的总结。

1.系统设计

1.1关于web的系统建议使用MVC的目录结构

想学习怎么搭建目录接口可以看一些优秀的项目是怎么写的

  1. https://github.com/wenjianzhang/go-admin(基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建等))。我们可以看看他是怎么组织目录结构的,基本上很齐全了。
  2. https://github.com/e421083458/gin_scaffold(使用gin构建了企业级脚手架,代码简洁易读,可快速进行高效web开发。)目录更简洁。

如下图:

 

原则:MVC模型。dao层,service层,controller层。逻辑从上到下为:controller,service,dao。

  • Controller:负责具体的业务模块流程控制,此层调用service层。
  • Service:负责业务模块的应用逻辑设计,数据库具体实现调用dao层。
  • Dao:做数据持久化层的工作,负责所有的数据库操作。

其余目录负责功能,object数据模型层,config配置系统的参数,如数据库,doc文档,utils公共函数,resources配置文件,web前端静态文件,main.go程序入口文件负责初始化,README.md阅读文件。

service的设计:

  1. 以功能模块进行划分,提高内聚。
  2. 只能从上往下调用,防止包循环引用。

dao层的设计:

  1. 关于一张表的事务应该放在一个函数里。
  2. 关于多张表的事务应该放在service层进行控制,有service层传入tx事务。
  3. dao层的函数应该是原子操作。

2.http接口(handler)

要求级别:

2.1.1请求体必须保持独立不能串用,保证修改了一个不会影响其他接口。返回体同理。

2.1.2请求体必须做验证,起码保证缺少字段或数据类型不对返回。

2.1.3所有的错误必须处理,和log记录。

2.1.4返回数组时必须考虑空数组,防止数组越界。

2.1.5路由必须有逻辑关系。

建议级别:

2.2.1允许的话建议使用分组路由,restful,逻辑更清晰,更便于使用中间件控制。

2..2.2返回体建议使用

{     "code": 200,     "msg": "success",     "data": [] }

2..2.3返回体'data'尽量不返回空

2.2.4可以使用简单sql语句查询到的数据不建议在内存中运算,这样会徒增复杂度。

2.3.5接口逻辑如果复杂应该简化,选择嵌套要抽离。

2.3.6写接口的步骤

  1. 接收json数据,验证,错误返回并记录。
  2. 按照正常逻辑编写处理逻辑,返回结果。
  3. 按照异常数据的逻辑进行异常处理,来补充上面的正常数据逻辑(异常数据包括接收值不再预期范围内,返回值不再预期范围内,比如在数学操作中被除数出现'0',除数出现'0'都是需要处理的异常数据)。

3.数据库对象映射(object层)

3.1模型层中的数据库映射必须保持干净,不能添加属性或减少属性。

一段时间来自己写接口的总结,作为记录,也希望对刚入门的有帮助。

下一个会补充更详细的如何写接口的规范总结。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值