一、项目整体架构图示例
二、模块命名规范
1.spring cloud 基础模块命名示例
模块 | 项目名 |
---|---|
注册中心 | cloud-eureka |
网关 | cloud-zuul |
配置中心 | cloud-config-server |
熔断监控(ui) | cloud-hystrix-dashboard |
健康检查 | cloud-hystrix-dashboard |
链路追踪 | cloud-zipkin-ui |
2.基础common模块命名示例
所有服务都引用的一个 二方库。
模块 | 项目名 |
---|---|
通用,工具类,异常,校验 | internal-common |
3.能力层相关模块命名示例
模块 | 项目名 |
---|---|
app升级 | service-app-update |
订单 | service-order |
短信 | service-sms |
验证码 | service-verification-code |
钱包 | service-wallet |
乘客用户管理 | service-passenger-user |
4.业务层相关模块命名示例
模块 | 项目名 |
---|---|
乘客端 | api-passenger |
司机端 | api-driver |
三、接口规范设计
https://www.amap.com/v4/formatted_address/meta?key=xxx
-
协议:https、http等
-
域名:/restapi.yuming.com/
-
版本:v1
-
路径:/xxoo/xxoo/ (名词)
-
动作:
(1)post:新建
(2)put:修改(修改后的全量数据)
(3)patch:修改(修改哪个,传哪个)
(4)delete:删除
(5)get:查询。 -
单词统一使用下划线或者驼峰格式,如下
addressCompent或formatted_address
四、接口安全设计
1.CIA: 保密性(Confidential),完整性(integrity),可用性(applicability)
(1)敏感数据传输和存储要加密,如手机号、身份证号要脱敏——保密性
(2)数据不丢失、被人篡改后接口无效——完整性
2.数据层面:防止sql注入
select * form table where name = (变量1;delete table)
可使用过滤 jsoup框架。
3.xss: spring-htmlUtils。
在正常用户请求中执行了黑客提供的恶意代码,问题出在:用户数据没有过滤,转义。
csrf: 人机交互。token。
冒充别人的登录信息,问题出在:没有防范不信任的调用。
4.数据权限控制。
jsoup里的xss whitelist(白名单)有6种方法,一个构造方法和5种静态方法。