1 前后端分离开发
1.1网站后台的部分采用前后端分离方式
以前的JavaWeb项目大多数都是java程序员又当爹又当妈,又搞前端,又搞后端。随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。
对于后端java工程师:
把精力放在设计模式,spring+springmvc,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,java性能优化,以及相关的项目管理等等。
对于前端工程师:
把精力放在html5,css3,vuejs,webpack,nodejs,Google V8引擎,javascript多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。
1.2企业开发流程
0 项目(产品)经理。UI 原型图 需求文档:登录页面 商品详情页
1项目经理让美工做出原型页面
2项目经理 拉着后端开发 前端开发工程师 讨论
3定义业务接口 post /user/add {} **查看资料中的接口文档**
4前后端分离开发
5前后端联调
6测试环境发布,测试部门测试
7预发布环境(业务部门老大 、技术部门老大)
8运维 正式上线
9线上bug:快速修复,当天晚上11-12 部署上线。程序员回不了家原因。
2 后端接口开发规范
2.1开发原则
- 自顶向下的设计原则:功能应该从表现层分析再到控制层、服务层、持久层逐层设计
- 自底向上的开发原则:上层需调用下层,因此开发应从底层向上层逐层开发项目中开发的层次次序参考DB->中间件->持久层->服务层->控制层
- 单一职责的开发原则:类或者方法提供的功能应该单一明确,特别越底层越应单一职责,以便维护 项目中Mapper方法必须功能单一,参数明确,拒绝两种以上的持久逻辑使用同一个Mapper方法
- 依赖倒置的开发原则:上层依赖下层,是依赖下层接口,并不是依赖下层的实现项目中每层都是通过接口调用Controller->Service->Mapper
2.2 开发步骤
- 明确类定义:明确哪些是重用类,哪些是需要新增的类。
- 明确主键规则:确认操作表的ID生成规则,是Mycat主键,还是Zk主键
- ControllerApi定义
- Mapper实现:查、改、删时注意是否使用mycat注解确认DN,插入时是否要插入主键id
- Service实现:可用通过时序图帮助我们梳理实现逻辑
- Controller实现:简单的Service层调用
- 单元测试或接口测试
2.3 接口版本规范说明
随着业务的复杂,同一个接口可能出现多个版本,为了方便后期切换和AB测试,需要定义接口的版本号
- 在某一个微服务下访问controller的时候在包名下加一个版本号,如下
com.oldlu.article.controller.v1
- 在访问具体的接口方法的url映射的时候也应该加上版本说明,如下:
@RequestMapping("/api/v1/article")
2.4 接口通用规范
ID混淆 | 请求和响应的连续增长ID需要经过混淆加密 |
---|---|
字符编码 | 请求和响应的内容字符集为UTF-8 |
支持多格式 | 响应结果支持JSON和XML,可通过Header Accept设置 |
URL格式 | Url为全小写字符,多个单词用下划线分隔 |
token | 请求头中存放当前用户的请求token(JWT格式) |
t | 请求头中存放当前请求的时间,用于基本的请求时效判断 |
md5 | 请求头中存放当前请求的参数验签字符串(查询串排序MD5加密) |
响应格式 | 响应格式只接受ResponseResult,code码需定义在AppHttpCodeEnum |