android端使用mockServer

article/2025/9/18 3:44:52

小伙伴们可能在开发的过程中遇到这样的痛点:比如一个新的项目开发需求下来了,正常来说,要等到服务端将接口开发完毕,我们才去对接数据。但是,往往后端人员又很忙,不能立马开发出接口,这样就大大降低了移动端的开发进度,所以,为了能够解决这个问题,我们就不得不自己设计接口,模拟服务端数据。等到真正测试的时候,将接口域名替换即可。这样,我们就不得不借助mock-server这款强大的工具了。目前,我接触了两种类似的服务端模拟,开发者可以根据不同的开发需求,用到项目中去。

一、nodeJs+express

1、安装node

可以到官网选择合适的版本安装node安装

2、安装express

找到nodejs安装目录,在该目录下安装express

npm install express --save
3、下载mockServer文件

下载地址:mockServer.zip,下载完成后解压zip包,会得到如下文件
在这里插入图片描述
interface文件夹和mockServer.js。

4、在当前解压目录下重新安装express
npm install express --save

然后,会多出一个目录:
在这里插入图片描述

5、编写mockServer.js
var fs = require('fs');
var express = require('express');
var app = express();var interfaceDir = "./interface";
var imageDir = "./image";fs.readdir(interfaceDir, function (err, files) {if (err) {console.log('读取服务器接口目录失败!');}else {//定义请求接口app.get('/api/sale_setting', function (req, res) {processNetworkRequest(req, res);});app.post('/api/product_info/page', function (req, res) {processNetworkRequest(req, res);});app.get('/api/product_info/page', function (req, res) {processNetworkRequest(req, res);});}
});var server = app.listen(8088, function () {var host = server.address().address;var port = server.address().port;console.log('server 地址为 http://%s:%s', host, port);
});function processNetworkRequest(req, res) {console.log("\n正在请求:" + req.path+" "+JSON.stringify(req.query));var name = interfaceDir + "/" + req.path + ".json";console.log("\n json文件名称:" + name);fs.readFile(name, function (err, data) {if (err) {var msg = "请求失败:" + req.path;console.log(msg);res.send(msg);}else {var tempData = data;var content = data.toString();res.send(content);}});
}

js中需要首先定义好请求接口,然后调用processNetworkRequest方法即可。其中fs.readdir就是读取我们目录下所有文件的方法。请求地址,对应的目录结构一定要正确
在这里插入图片描述
processNetworkRequest:这里会找到与我们请求地址相对应的json文件,比如 /api/sale_setting ,到这个方法中会拼接成json的路径 /api/sale_setting.json 。我们只需要将数据配置在json文件中即可返回。

6、完成以上配置,启动服务

mockServer.js的根目录,使用如下命令即可。

node mockServer.js

如何出现如下打印信息,表示你的本地服务器已经搭建好了。端口号默认为8088
在这里插入图片描述

7、测试

在浏览器中输入如下测试地址
在这里插入图片描述
成功返回了sale_setting.json模拟数据。

二、mock-server

上面这种方式有优点,也有缺点,在我个人看来。优点就是所有的模拟数据是以json格式模拟的,不同的api请求数据配置在不同的json中。但是缺点是不会区分post和get请求,另外需要安装node和express,每次更新mockServer.js都需要重新启动一次。
下面这种方式,也是有优缺点,我们看如何实现吧。官网地址:mock-server官网

1、下载mock-server配置文件

下载地址:mockServer1.zip,下载完成后解压zip包,会得到如下文件
在这里插入图片描述
readme.txt中高速你如何启动服务

2、启动服务

cd进入当前解压目录下,执行如下命令

java -Dmockserver.watchInitializationJson=true -Dmockserver.initializationJsonPath=mockserverInitialization.json -jar mockserver-netty-5.10.0-jar-with-dependencies.jar -serverPort 1080 -logLevel INFO

端口号默认1080

3、配置json数据

mockserverInitialization.json中配置api及相应的数据,如下:

[{"httpRequest": {"path": "/test1"},"httpResponse": {"body": "我是test1"}},{"httpRequest": {"path": "/test2"},"httpResponse": {"headers": {"content-type": ["text/plain; charset=utf-16"]},"body": "我是中文"}},{"httpRequest": {"path": "/test3","body":{"type": "JSON","json":{"name":"123"},"matchType": "STRICT"}},"httpResponse": {"body": "test3"}}
]

上面定义了三种请求,我们一个个来看,有什么区别。

  • /test1:这种方式,只需要匹配到path即可,但是httpResponse如果有中文
  • /test2:这种方式,只需要匹配到path即可,设置headers以后,就不会导致中文乱码
  • /test3:这种方式,请求传递的参数为json格式,匹配到json的内容就会返回,否则不会返回。
4、测试

第一种情况:
test1测试
第二种情况:
在这里插入图片描述
第三种情况:
在这里插入图片描述

但是,在使用的时候发现,如果你在httpRequest中添加中文,你会无法匹配到path。即使按照官方配置,如下:
在这里插入图片描述
也是无法正常匹配,个人感觉这一点很不好。

总结:

  • 使用nodejs方式,能够对不同的请求api配置不同的json文件,但是使用mock-server只能将所有的数据放在同一个json中,
  • 使用nodejs方式,不会出现中文乱码问题,但是使用mock-server需要格外注意了,
  • 使用nodejs方式,需要安装nodejs和express,但是使用mock-server就不需要安装其他插件了,
  • 使用nodejs方式,每次添加新的path都需要重启服务,但是使用mock-server,能够实现热更新,不需要重启。

以上就是个人使用的心得,关于httpRequest中添加中文如何避免乱码,欢迎各位读者分享。


http://chatgpt.dhexx.cn/article/EGaxpQHx.shtml

相关文章

postman使用mock server

可以修改请求返回值(response body数据) 登录postman账号,也可以在线操作Postman API Platform 其他流程可参考 使用Postman实现mock server搭建详解_postman mockserver_阿波-赞的博客-CSDN博客

Postman搭建mock server接口

在工作中,有时后端的接口还没有开发好,前端这时可以用postman的mock server来创建一个伪接口,访问这个伪接口来获得自己想要的响应。 在学习接口测试的过程中,也可以用postman的这个功能,来帮助学习接口测试。 1.首先…

Postman Mock Server 使用

前言 科普界的老问题了。 大部分博客日志抄官方文档给的初始化样例,啥也不说。 看完除了会create,啥也不会了。 自食其力研究一下。 创建 略。 见document。 https://learning.postman.com/docs/designing-and-developing-your-api/mocking-data/moc…

Mock Server基本使用方法

Mock Server 什么是mock servermock server的作用初始Flask配置文件路由系统 【基于flask框架实现Mock Server】get基本方法使用 什么是mock server 实现mock功能的一个服务 mock server的作用 现今的业务系统很少有独立存在的,他们或多或少需要使用兄弟团队或者…

gRPC Mock Server

PowerMock是一个Mock Server的实现,它同时支持HTTP与gRPC协议接口的Mock,并提供了灵活的插件功能。 这个工具面向于前后端、测试等对有接口Mock需求的开发人员,也可以作为一个通用的Mock服务,部署在网关架构或API管理平台中&#…

mock server java_1分钟搭建极简mock server

1、无聊的背景、起源: 如今的业务系统越来越复杂庞大,各个功能直接的调用也是多如牛毛,但如果在联调的时候,恰好被调的接口正在开发,怎么办?傻傻的等么,不存在的!这时会搭建一些serv…

Mock Server入门及实践

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程 什么是Mock Server? Mock测试:就是在测试过程中,对于某些不容易构造或者不容易…

用 java 安装 mockserver,Mock Server实践

背景 在美团服务端测试中,被测服务通常依赖于一系列的外部模块,被测服务与外部模块间通过REST API或是Thrift调用来进行通信。要对被测服务进行系统测试,一般做法是,部署好所有外部依赖模块,由被测服务直接调用。然而有…

Mock-- Server的使用

近日项目需求 使用mock-server来提供虚拟数据(API),方便在服务被调用方没有开发好的情况下,服务调用方能不被耽误的继续进行开发 。 我们的情况大概是这样: 我们的服务去调用 另一方提供的服务,另一方的服务可能还没有开发好&…

前端调试,模拟数据利器之Mock Server使用教程来啦~

文章目录 1 MockServer是什么2 为什么要使用MockServer3 MockServer的作用4 搭建MockServer服务4.1 部署MockServer服务详细步骤4.1.1 第一种方式(推荐)4.1.2 第二种方式 4.2 启动Shell脚本4.3 访问MockServer UI界面 5 MockServer服务的基础使用5.1 项目…

浅谈 Mock Server

What?什么是 Mock Server Mock 是模拟的意思。在测试中,通常表述为:对测试过程中不容易构造或者不容易获取的物件,用一个虚拟的物件来进行模拟的一个过程。能够提供 Mock 功能的服务就叫作 Mock Server。 Mock Server 通过模拟真…

Mock Server 入门

Mock Server介绍 什么是mock ? 我在去年的时候介绍一篇幅 python mock的基本使用,http://www.cnblogs.com/fnng/p/5648247.html 主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度。 什么是Mo…

Matlab解决脚本中中文乱码问题

首先下载字体yahei consolas hybrid。百度网盘地址: 链接:https://pan.baidu.com/s/1Zv2FMt3uow7DZix2rtAbrA 提取码:am4d 然后将下载的字体保存在C:\Windows\Fonts中,启动Matlab2018a这里使用的是2018a版本,其他版…

WEB UI自动化测试之AutoMagic自动化测试

AutoMagic自动化测试平台 AutoMagic 是一个基于WebUI的自动化管理平台。为什么叫AutoMagic呢?因为自动化(Automation)在执行起来的时候是一个很神奇的事情,它可以无人值守的模拟人的操作,就像魔术(Magic&a…

Jupyter Notebook从入门到精通

下载 本课程练习完整代码 Jupyter Notebook: https://gist.github.com/zgpeace/8d3eb8c803a54d1ca797fa26cb68bd4c 财富500强 csv下载 https://github.com/zgpeace/fortune500.git 1. 什么是 Jupyter 笔记本? Jupyter Notebook 是一个非常强大的工具&…

dev shm mysql_新特性:/dev/shm对Oracle 11g的影响

ORACLE 从11g版本开始,引入了一个自动内存管理(Automatic Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如 /dev/shm对Oracle 11g的影响: ORACLE 从11g版本开始,引入了一个自动内存管理(Automatic Memory Mana…

Git分布式版本控制工具

Git分布式版本控制工具 文章目录 Git分布式版本控制工具1、目标 2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、Git工作流程图 3、Git安装与常用命令3.1、Git 环境配置3.1.1 下载与安装3.1.2 基本配置3.1.3 为常用指令配置别名3.1.4 解决 GitBash 乱码问题 3.2、获取…

关于我在windows使用volatility取证这档事

官网下载地址:https://www.volatilityfoundation.org/releases volatility3的官方文档:https://volatility3.readthedocs.io/en/latest/basics.html 下载 看清有两个版本,用法不一样 第一次我下载了Volatility 2.6 Windows Standalone Exe…

DLNLP学习笔记03(Speech Recognition: LAS模型)

Listen, Attend, and Spell (LAS) [Chorowski. et al., NIPS’15] 论文地址:https://arxiv.org/pdf/1508.01211.pdf 1 模型简介: 2 Listen:其中Encoder可以为RNN,CNN或者RNNCNN。 Listen-down sampling:(RN…

On Device Debug!IDA+GDB trace automagic.apk in s1

2019独角兽企业重金招聘Python工程师标准>>> http://forum.xda-developers.com/showthread.php?t2050393 Well... I have attached a debugger to native code, set breakpoints, analyzed registers, memory, etc. It wasnt that easy though. It took me severa…