安卓ios app基于HTTP mock(RAP)的前后端分离开发

问题:

1、 前端开发需要等待后端

2、 http mock使用起来不方便

3、 项目中已经存在很多接口了,这些接口去mock的话需要花费工作量

分析:

1、 前后端分离好像就mock一种方案比较方便一点

2、 如果能找到一个使用很方便的mock就好了

3、 实现了的接口走我们的代码,未实现的接口走mock,两者结合在一起能兼容

解决:

1&2、 经过调研,发现阿里妈妈的RAP使用起来非常的方便,文档视频示例很丰富,可以根据文档来使用

2、实现了的接口走我们的代码,未实现的接口走mock 解决的思路就是当请求未实现的接口时,肯定是报404,那么我们可以在一个统一的方法里去处理404,在这个方法里解析请求的url,然后通过url去拼接对应的RAP的接口地址。之后通过URL、HTTPClient之类的工具去请求RAP的URL,获取RAP生成的mock数据,然后把mock数据返回给前端。

具体过程分为两步走:

a) 统一处理未匹配的请求。大概有这么几种方法。我们使用的是SpringMVC,所以我添加了一个方法(暂且叫他mockMapping方法)用来匹配/app请求前缀/**/*的请求,这样子所有没有被精准匹配的请求都会匹配到这个方法来

b) 在mockMapping方法里面,通过apache HTTPClient去请求RAP的接口(代码看这里

大概的截图长这样子


 

创建的mock,RAP会给你生成一个唯一对应的url

这个url就是下图中右上角红框中那部分,加上左边请求地址这一块

需要注意的是,右上角哪里的url里面有一部分叫做mockjs,需要给他替换成mockjsdata,这样子你通过httpClient去请求的数据才是通过mockjs解析后的JSON字符串



 
 

 --------------------------------------------------------------------

花了不到半个小时(代码写的很好看)的时间看了RAP的源码,mock部分大概分为三步来实现

1、 你创建一个MOCK请求的时候他保存这个请求的MOCK定义以及对应的生成的url。

2、 当请求时,我们请求/mockjsdata这个,后面带上前一步生成的url

3,、 RAP通过URLReWrite,将mockjsdata交由/mock/createMockjsData.action处理,在这个action里面通过url找到对应的mock定义,然后解析出来返回

猜你喜欢

转载自k19421.iteye.com/blog/2313911