马士兵网约车项目笔记--第一节

<html> <head></head> <body> <div class="content ql-editor"> <p><br></p> <h1><strong style="color: rgb(51, 51, 51);">马士兵网约车项目笔记</strong></h1> <h2><strong style="color: rgb(51, 51, 51);"><br></strong></h2> <h2><strong style="color: rgb(51, 51, 51);">设计原则</strong></h2> <p><br></p> <p>1.单一职责</p> <p>每一个微服务干一件事</p> <p>如订单服务和地图服务</p> <p>2.高内聚</p> <p>关系紧密的微服务放到一块</p> <p>如订单管理服务和订单金额统计服务</p> <p>3.低耦合</p> <p>一个服务变更不要影响别的服务</p> <p>4.粒度把控</p> <p>无标准 适合最好</p> <p>服务拆分的时候多考虑系统边界</p> <p>5.AKF原则</p> <p>分布式系统考虑系统架构的拆分</p> <p>x轴 水平扩张</p> <p>y轴 功能划分</p> <p>z轴 分片</p> <p><br></p> <h2><strong style="color: rgb(51, 51, 51);">乘客端</strong></h2> <p><br></p> <p>注册/登录功能</p> <p><span class="ql-font-monospace"><img src="https://pic.code-nav.cn/planet_post_image/1616717117468442625/vnb6wnfz.jpeg"></span></p> <p>拆分成两个模块:api乘客模块和验证码模块。项目中所有的涉及的验证码都能放到这个模块中。</p> <p><strong>验证码有倒计时的问题可以用Redis的ttl来做</strong>,api乘客模块连上Redis,把验证码存到Redis里边,设置验证码的过期时间为120s。当Redis的这个key过期之后,乘客再去填这个验证码的时候,就没有这个key了,就说明验证码过期了。</p> <p>电信运行商接口发送短信</p> <p><br></p> <p><br></p> <h2><strong style="color: rgb(51, 51, 51);">什么是API?</strong></h2> <p><br></p> <p>接口文档所说的接口,就是API(接口设计)</p> <p>A:Application 程序</p> <p>P:Programmer 编程</p> <p>I:Interface 接口</p> <p>SJ:①XX调用Java的某个Interface接口,并调用其实现类来完成业务逻辑(接口只有方法,没有方法体)</p> <p>② HTTP发送请求,得到一个相应,这也是API</p> <p>总结:只要你提供了<em>一种沟通方式、一些方法、一个函数、一个功能</em> 给别人用,别人能通过对你的方法的<strong>调用</strong>,来实现他想要的结果,这就是API。</p> <p>平时工作中所说的:“调用一下腾讯的API、调用一下高德地图的API、调用一下XX功能的API”</p> <p><br></p> <h2><strong style="color: rgb(51, 51, 51);">restful规范/风格</strong></h2> <p><br></p> <p>Resource Representational state transfer (表现层状态转移)</p> <p>REST就是<strong>资源</strong>的状态转移</p> <p><strong>资源</strong>就是消息的实体</p> <p>而且URI(URL)是指向<strong>资源</strong>的</p> <p>把资源具体呈现出来的就是<strong>表现层</strong></p> <p>把资源的状态进行改变就是<strong>状态转移</strong></p> <p>(例如修改用户状态从1-0,也就是资源发生了变化;操作状态转移的动作(方法)也就是post,put,get, delete,patch等);</p> <p><strong>要素:</strong></p> <p>1、协议: http(s)</p> <p>2、域名:<a href="http://www.aaa.com/" target="_blank" style="color: rgb(65, 131, 196);">www.aaa.com</a> 站点</p> <p><a href="http://api.xxx.com/" target="_blank" style="color: rgb(65, 131, 196);">api.xxx.com</a>提供api的</p> <p>3、路径: /user /company</p> <p>4、版本: v1 v2</p> <p>5、动作:post 新增,delete删除, put 修改,patch修改(修改哪个传哪个,打补丁),get查询</p> <p><br></p> <h2><strong style="color: rgb(51, 51, 51);">RESTful命名要点</strong></h2> <p><br></p> <p>1、带用户Id(带敏感信息的)的URL路径,都不要(防止篡改)</p> <p>2、URL路径中资源的名字一般都使用复数形式,资源名字都是名词(user<strong>s</strong>,course<strong>s</strong>)</p> <p>3、查单个数据的URL要带参数,</p> <p><span class="ql-font-monospace"><img src="https://pic.code-nav.cn/planet_post_image/1616717117468442625/cjc713yl.jpeg"></span>查所有的就不需要参数了,</p> <p><span class="ql-font-monospace"><img src="https://pic.code-nav.cn/planet_post_image/1616717117468442625/2um139ae.jpeg"></span>后台用get方法List集合接收所有即可</p> <p>RESTful增删改查一个用户的信息</p> <p><span class="ql-font-monospace"><img src="https://pic.code-nav.cn/planet_post_image/1616717117468442625/cv7aaayz.jpeg"></span></p> <p><span class="ql-font-monospace"><img src="https://pic.code-nav.cn/planet_post_image/1616717117468442625/nw59vaao.jpeg"></span></p> <p>把动作名写在api前面,新增post不用传id,其他需要传id</p> <p><span class="ql-font-monospace"> </span></p> <p>状态码</p> <p>消息</p> <p>翻页设计</p> <p>方式一:/api/courses?page=1</p> <p>方式二:/api/courses?max_id=1000</p> <p><br></p> <h2><strong style="color: rgb(51, 51, 51);">apifox介绍</strong></h2> <p><br></p> <p>结合前端 后端 测试 文档</p> <p>设计阶段 - 接口文档</p> <p>开发阶段</p> <p>联调测试阶段</p> <p>api first</p> <p><br></p> </div> </body> </html>

下载 APP