前言
在当今的移动运用开发中,API 恳求已经成为了不可或缺的一部分。开发人员需求经过 API 恳求获取数据,以便为运用程序供给所需的信息和功用。可是,在开发过程中,咱们常常遇到一些挑战,比方依靠于外部服务,网络推迟,恳求超时等等。这些问题会影响开发人员的工作功率,同时也或许影响运用程序的性能和用户体验。
这时候,Mock 恳求数据就显得尤为重要。Mock 恳求是一种模仿 API 恳求数据的办法,开发人员能够在没有实践 API 呼应的情况下,经过 Mock 数据来测验和开发运用程序。Mock 数据能够协助开发人员在开发早期就确认运用程序的结构和功用,并且在解决问题时能够快速定位到问题呈现的方位。Mock 恳求还能够进步开发人员的工作功率,削减依靠于外部服务的风险。
因此,在开发 Android 运用程序时,有一个便利好用的 Mock 结构来协助开发者模仿 API 恳求数据是十分必要的。本篇就向大家介绍一个在 Android 开发中能够快速、灵敏模仿 API 恳求的结构。
运用
全体预览效果:
该结构分为两部分,服务端和客户端,这儿的服务端并不是 API 的后台服务,而是接纳 Mock 数据的服务,集成到咱们的 Android 程序中;客户端为办理 Mock 数据的 PC 程序,支撑 Macos、Windows、Linux。
集成 MockServer
在需求运用到 Mock 的 Android 项目中增加 Mock 的依靠库,然后进行简单的初始化就可快速集成 MockServer。
目前 MockServer 只支撑对 OKHttp 的恳求进行数据模仿
增加依靠
在 module 的 build.gradle 中增加 MockServer 依靠:
dependencies {
implementation 'com.loongwind.ardf:mock:1.0.0'
}
初始化
在项目的 Application 中或者运用 Http 恳求之前进行 MockServer 的初始化,初始化代码如下:
MockServer.init(context = context, enable = true, enableCache = false)
初始化办法有三个参数:
- context:Android 的上下文,建议穿 ApplicationContext
-
enable:是否敞开 Mock,默许是 true,能够经过
BuildConfig.DEBUG�
来控制 debug 时敞开,release 时封闭 - enableCache:是否启用缓存,默许是 false,不会缓存装备的 Mock 数据,敞开缓存后会本地缓存装备的 Mock 数据,下次启动会自动运用,适用于 Mock 启动时就需求拜访的接口数据。
增加 OKHttp 阻拦器
初始化后还需求给 OKHttp 增加 MockServer 的阻拦器,MockServer 库供给对应的扩展办法,运用如下:
val okHttpClient = OkHttpClient.Builder()
// 扩展办法,用于增加 MockServer 的阻拦器
.addMockInterceptor()
.build()
到这儿在 Android 代码中集成 MockServer 就完成了,然后运行 APP 到设备上,等待结合客户端的运用。
运用 MockServer 客户端
首先在项目的 Github Release 中下载最新客户端,依据自己的系统选择下载对应的版本,如下图:
下载后进行安装,打开后客户端界面如下:
没错,便是一篇空白…,问题不大,点击 New
增加需求 Mock 的设备:
称号随意填,地址填写你设备的 ip 地址,端口默许为 8080,比方:192.168.1.12:8080
,然后点击确认:
然后点击右边的加号创建 Mock 数据:
填写完成后点击提交即可在对应设备下显示,如下:
在该页面可对 Mock 数据进行修改;可敞开、封闭 Mock,可针对整个设备敞开封闭也可针对某一个接口进行敞开封闭。
需求电脑跟设备在同一局域网才可进行数据的 Mock
完成原理
下面来简单介绍一下完成原理,后续将会以单独的文章介绍详细完成。
Android
在 Android 中经过对 OKHttp 增加阻拦器,阻拦 Http 恳求,当检测到是咱们需求 Mock 的恳求时就回来 Mock 的 Response 数据。 那 Mock 的数据是怎么传到设备里的呢?那是因为在 Android 中敞开了一个 Http 服务,客户端经过 Http 恳求将数据提交到 Android 设备上,然后完成了 Mock 数据的传输。
客户端
客户端是采用 Flutter 开发的桌面运用程序,支撑 Macos、Windows、Linux,主要是经过设置的地址将输入的 Mock 数据提交到对应的 Android 设备上。 全体中心结构如下:
最后
MockServer 是一种用于模仿 Android HTTP 呼应的库,它能够在运用程序开发过程中模仿 API 呼应,然后让开发人员在不依靠于实践 API 呼应的情况下进行测验和开发,削减对外部服务的依靠,然后进步开发功率。
TODO:
- 支撑对 HTTP 呼应码的 Mock
- 支撑对呼应推迟的 Mock
- 支撑参数匹配
源码地址:AndroidMockServer、android_mock_client
本文正在参加「金石方案」