内容简介:后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!如关于用户的操作:
前言
后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!
项目结构规范
结构图
结构设计
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命名使用名词复数;
参考文献
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Application Development with Yii 1.1 and PHP5
Jeffrey Winesett / Packt Publishing / 2010-08-27
In order to understand the framework in the context of a real-world application, we need to build something that will more closely resemble the types of applications web developers actually have to bu......一起来看看 《Agile Web Application Development with Yii 1.1 and PHP5》 这本书的介绍吧!