马士兵网约车项目笔记--第一节
马士兵网约车项目笔记
设计原则
1.单一职责
每一个微服务干一件事
如订单服务和地图服务
2.高内聚
关系紧密的微服务放到一块
如订单管理服务和订单金额统计服务
3.低耦合
一个服务变更不要影响别的服务
4.粒度把控
无标准 适合最好
服务拆分的时候多考虑系统边界
5.AKF原则
分布式系统考虑系统架构的拆分
x轴 水平扩张
y轴 功能划分
z轴 分片
乘客端
注册/登录功能

拆分成两个模块:api乘客模块和验证码模块。项目中所有的涉及的验证码都能放到这个模块中。
验证码有倒计时的问题可以用Redis的ttl来做,api乘客模块连上Redis,把验证码存到Redis里边,设置验证码的过期时间为120s。当Redis的这个key过期之后,乘客再去填这个验证码的时候,就没有这个key了,就说明验证码过期了。
电信运行商接口发送短信
什么是API?
接口文档所说的接口,就是API(接口设计)
A:Application 程序
P:Programmer 编程
I:Interface 接口
SJ:①XX调用Java的某个Interface接口,并调用其实现类来完成业务逻辑(接口只有方法,没有方法体)
② HTTP发送请求,得到一个相应,这也是API
总结:只要你提供了一种沟通方式、一些方法、一个函数、一个功能 给别人用,别人能通过对你的方法的调用,来实现他想要的结果,这就是API。
平时工作中所说的:“调用一下腾讯的API、调用一下高德地图的API、调用一下XX功能的API”
restful规范/风格
Resource Representational state transfer (表现层状态转移)
REST就是资源的状态转移
资源就是消息的实体
而且URI(URL)是指向资源的
把资源具体呈现出来的就是表现层
把资源的状态进行改变就是状态转移
(例如修改用户状态从1-0,也就是资源发生了变化;操作状态转移的动作(方法)也就是post,put,get, delete,patch等);
要素:
1、协议: http(s)
2、域名:www.aaa.com 站点
api.xxx.com提供api的
3、路径: /user /company
4、版本: v1 v2
5、动作:post 新增,delete删除, put 修改,patch修改(修改哪个传哪个,打补丁),get查询
RESTful命名要点
1、带用户Id(带敏感信息的)的URL路径,都不要(防止篡改)
2、URL路径中资源的名字一般都使用复数形式,资源名字都是名词(users,courses)
3、查单个数据的URL要带参数,
查所有的就不需要参数了,
后台用get方法List集合接收所有即可
RESTful增删改查一个用户的信息


把动作名写在api前面,新增post不用传id,其他需要传id
状态码
消息
翻页设计
方式一:/api/courses?page=1
方式二:/api/courses?max_id=1000
apifox介绍
结合前端 后端 测试 文档
设计阶段 - 接口文档
开发阶段
联调测试阶段
api first
