内容简介:后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!如关于用户的操作:
前言
后端开发的正确打开方式是先将项目规范设计好,然后再将项目文档(接口文档)写好,最后才开始编码!
项目结构规范
结构图
结构设计
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
命名使用名词复数;
参考文献
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java并发编程实战
Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea / 童云兰 / 机械工业出版社华章公司 / 2012-2 / 69.00元
本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性......一起来看看 《Java并发编程实战》 这本书的介绍吧!
XML、JSON 在线转换
在线XML、JSON转换工具
RGB HSV 转换
RGB HSV 互转工具