内容简介:后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!如关于用户的操作:
前言
后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!
项目结构规范
结构图
结构设计
Controller(访问控制转发层)
- 校验token;
- 用户权限校验;
- 用户角色校验;
- 参数校验;
- 数据校验;
- 数据序列化;
- 轻业务逻辑;
- 异常兜底;
- 使用
DTO<VO>或者DTO<BO>作为对外领域模型; - 一个
Controller应一个Service
Service(业务逻辑服务层)
- 复杂的业务编排逻辑处理;
- 捕捉异常;
- 复用性低;
- 使用
DTO<BO>作为领域模型(Business Object 业务对象); - 一个
Controller应一个Service;
Mannager(通用业务处理层)
- 对第三方平台封装的层,预处理返回结果及转化异常信息;
- 对
Service层通用能力的下沉,如缓存方案、中间件通用处理; - 与
DAO层交互,对多个DAO的组合复用; - 复用性高;
- 可以是单个服务,也可以是复合服务,比如多表查询;
- 使用
DTO<BO>作为领域模型;
DAO(数据持久访问层)
Redis Cache Service DO
表结构规范
- 数据库表的命名 t_ 为开头;
- 表的主键有两个,表序号 id ,用户ID user_id ,分布式的全球唯一标识 only_id ;
- 字段命名
下划线规则,无大写,下划线分离开单词。
请求规范
- 创建使用
POST请求; - 删除使用
DELETE请求; - 更新使用
PUT请求; - 查询使用
GET请求;
接口规范
如关于用户的操作:
创建用户
- 请求方法: POST
- 请求路径: https://aip.huangdayu.cn/v1/users
查询单个用户数据
- 请求方法: GET
- 请求路径: https://aip.huangdayu.cn/v1/users/{user_id}
更新用户数据
- 请求方法: PUT
- 请求路径: https://aip.huangdayu.cn/v1/users/{user_id}
删除用户
- 请求方法: DELETE
- 请求路径: https://aip.huangdayu.cn/v1/users/{user_id}
查询用户列表
- 请求方法: GET
- 请求路径: https://aip.huangdayu.cn/v1/users
查询用户名称
- 请求方法: GET
- 请求路径: https://aip.huangdayu.cn/v1/users/{user_id}/name
说明
v1:为接口版本号 users :为具体对象的名词复数
URL标准
- URL 的命名
必须全部小写,单词之间用_分隔开 - URL 中资源(
resource)的命名必须是名词,并且必须是复数形式 -
必须优先使用Restful类型的 URL - URL 中不能出现
-,必须用下划线_代替 - URL
必须是易读的 - URL
一定不可暴露服务器架构
入参规范
- 使用
application/x-www-form-urlencoded与application/json;charset=UTF-8并存。 - 使用
Token身份认证,解决判断和权限鉴定,采用AOP面向切面编程认证Token; - 请求携带的Token保存在Http Header的
Authorization字段中,例如:Authorization: Bearer token…; - 分页页数使用
page字段,例如:page=3; - 每页的数量使用
per_page字段,例如:per_page=10; - 指定数量使用
limit字段,例如:limit=10; - 返回结果 排序 属性使用
sortby字段,例如:sortby=”大鱼叔叔”; - 返回结果排序顺序使用
order字段,例如:order=asc
出参规范
- 响应Content-Type使用标准的
application/json;charset=UTF-8 - 响应Header使用标准的
HTTP Status Code; - 状态码:
code使用int(内部定义规范); - 状态标识:
msg使用String(内部定义规范); - 状态说明:
desc使用String(内部定义规范); - 响应数据体:
data使用List<T>; -
List中包含分布式全球唯一标识only_id; -
request_id和server_time为非必须;
参数校验规范
存在争议
防御派
方法应该为自己负责,我不能保证调用者是否进行了校验,所以我必须要进行校验,从而保证程序的健壮性。
简约派
方法应该校验,但是不应该重复校验。重复校验产生了冗余的代码,导致程序可读性差。
本规范标准
开发自用方法
权限: private , protected , default
参数是可控的,在方法中不必校验参数合法性,调用者在调用之前应确认传入参数的合法性。
开发公共方法
权限: public
参数是不可控的,在方法中必须校验参数的合法性,因为无法保证调用者的行为和传入参数的合法性。
其他规范
- 前后端分离架构
-
Web/App(Android/iOS)/Open(对外开放OAuth)共用一套接口; - 使用
JSON作为交互协议; - 使用
Swagger作为接口文档; - 使用
HATEOAS构建RESTful Web API JSON; -
RESTful API命名使用名词复数;
参考文献
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据分析技术白皮书
伍海凤、刘鹏、杨佳静、马师慧Sara、李博、Shirley Song、Zinc、李晓艳 / 2016-8-11 / 0
关于数据分析技术白皮书(Analytics Book 中文版),主要内容围绕: 1. 分析(Analytics):网站分析 & APP分析 2. 谷歌分析工具的原理、部署与使用 3. 开源网站分析工具的原理、部署与使用 4. Log日志分析原理 5. 网站分析的维度与指标定义 6. 如何炼成为一个互联网数据分析师 请访问书的数据分析技术白皮书官网“免费”阅......一起来看看 《数据分析技术白皮书》 这本书的介绍吧!