面试官:你们前后端分离的接口规范是什么?

  • 对的人做对的事

  • 更好的共建模式

  • 快速的反应变化

3. 什么是分离


我们现在要做的前后分离第一阶段:“基于 Ajax 带来的 SPA 时代”,如图:

基于 Ajax 带来的 SPA 时代

这种模式下,前后端的分工非常清晰,前后端的关键协作点是 Ajax 接口。看起来是如此美妙,但回过头来看看的话,这与 JSP 时代区别不大。复杂度从服务端的 JSP 里移到了浏览器的 JavaScript,浏览器端变得很复杂。类似 Spring MVC,这个时代开始出现浏览器端的分层架构:

浏览器端的分层架构

对于这一SPA阶段,前后端分离有几个重要挑战:

前后端接口的约定。

如果后端的接口一塌糊涂,如果后端的业务模型不够稳定,那么前端开发会很痛苦。这一块在业界有 API Blueprint 等方案来约定和沉淀接口,在阿里,不少团队也有类似尝试,通过接口规则、接口平台等方式来做。有了和后端一起沉淀的接口规则,还可以用来模拟数据,使得前后端可以在约定接口后实现高效并行开发。 相信这一块会越做越好。

前端开发的复杂度控制。

SPA 应用大多以功能交互型为主,JavaScript 代码过十万行很正常。大量 JS 代码的组织,与 View 层的绑定等,都不是容易的事情。典型的解决方案是业界的 Backbone,但 Backbone 做的事还很有限,依旧存在大量空白区域需要挑战。

4. 如何做分离


4.1 职责分离

职责分离

  • 前后端仅仅通过异步接口(AJAX/JSONP)来编程

  • 前后端都各自有自己的开发流程,构建工具,测试集合

  • 关注点分离,前后端变得相对独立并松耦合

4.2 开发流程

  • 后端编写和维护接口文档,在 API 变化时更新接口文档

  • 后端根据接口文档进行接口开发

  • 前端根据接口文档进行开发 + Mock平台

  • 开发完成后联调和提交测试

Mock 服务器根据接口文档自动生成 Mock 数据,实现了接口文档即API:

开发流程

4.3 具体实施

现在已基本完成了,接口方面的实施:

  • 接口文档服务器:可实现接口变更实时同步给前端展示;

  • Mock接口数据平台:可实现接口变更实时Mock数据给前端使用;

  • 接口规范定义:很重要,接口定义的好坏直接影响到前端的工作量和实现逻辑;具体定义规范见下节;

接口文档+Mock平台服务器

5. 接口规范V1.0.0


5.1 规范原则

  • 接口返回数据即显示:前端仅做渲染逻辑处理;

  • 渲染逻辑禁止跨多个接口调用;

  • 前端关注交互、渲染逻辑,尽量避免业务逻辑处理的出现;

  • 请求响应传输数据格式:JSON,JSON数据尽量简单轻量,避免多级JSON的出现;

5.2 基本格式

5.2.1 请求基本格式

GET请求、POST请求必须包含key为body的入参,所有请求数据包装为JSON格式,并存放到入参body中,示例如下:

GET请求:

xxx/login?body={"username":"admin","password":"123456","captcha":"scfd","rememberMe":1}

POST请求:

5.2.2 响应基本格式

{     code: 200,     data: {         message: "success"     } }

code : 请求处理状态

  • 200: 请求处理成功

  • 500: 请求处理失败

  • 401: 请求未认证,跳转登录页

  • 406: 请求未授权,跳转未授权提示页

data.message: 请求处理消息

  • code=200 且 data.message=“success”: 请求处理成功

  • code=200 且 data.message!=“success”: 请求处理成功, 普通消息提示:message内容

  • code=500: 请求处理失败,警告消息提示:message内容

5.3 响应实体格式

{     code: 200,     data: {         message: "success",         entity: {             id: 1,             name: "XXX",             code: "XXX"         }     } }

data.entity: 响应返回的实体数据

5.4 响应列表格式

data.list: 响应返回的列表数据

5.5 响应分页格式

{     code: 200,     data: {         recordCount: 2,         message: "success",         totalCount: 2,         pageNo: 1,         pageSize: 10,         list: [             {                 id: 1,                 name: "XXX",                 code: "H001"             },             {                 id: 2,                 name: "XXX",                 code: "H001"             } ],         totalPage: 1     } }

  • data.recordCount: 当前页记录数

  • data.totalCount: 总记录数

  • data.pageNo: 当前页码

  • data.pageSize: 每页大小

最后

文章不易,如果大家喜欢这篇文章,或者对你有帮助希望大家多多点赞转发关注哦。文章会持续更新的。绝对干货!!!

  • Android进阶学习全套手册
    关于实战,我想每一个做开发的都有话要说,对于小白而言,缺乏实战经验是通病,那么除了在实际工作过程当中,我们如何去更了解实战方面的内容呢?实际上,我们很有必要去看一些实战相关的电子书。目前,我手头上整理到的电子书还算比较全面,HTTP、自定义view、c++、MVP、Android源码设计模式、Android开发艺术探索、Java并发编程的艺术、Android基于Glide的二次封装、Android内存优化——常见内存泄露及优化方案、.Java编程思想 (第4版)等高级技术都囊括其中。

  • Android高级架构师进阶知识体系图
    关于视频这块,我也是自己搜集了一些,都按照Android学习路线做了一个分类。按照Android学习路线一共有八个模块,其中视频都有对应,就是为了帮助大家系统的学习。接下来看一下导图和对应系统视频吧!!!

  • Android对标阿里P7学习视频

  • BATJ大厂Android高频面试题
    这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等

    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
    715428881333)]

  • Android对标阿里P7学习视频

[外链图片转存中…(img-OOISf8aK-1715428881334)]

  • BATJ大厂Android高频面试题
    这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等
    [外链图片转存中…(img-tbg6abRf-1715428881335)]
    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值