Android如何自定义服务器DynamicMockServer的使用

news2025/1/24 11:38:49

在平时开发时经常需要与服务器进行联调,但是服务器开发往往比前端的要滞后。这时候需要我们自己去mock数据来调通流程。

今天给大家介绍一款Android上的MockServer----DynamicMockServer,支持接口调用,静态文件。

DynamicMockServer:

  • 配置文件灵活配置mockserver需要支持的接口。
  • 动态修改接口返回信息。
  • 静态文件的返回。
  • 支持MockServer后台常驻。

一、拉去dynamicMockServer最新代码

git clone https://gitee.com/gggl/dynamic-mock-server.git

2、Android Studio 导入dynamic-mock-server

 

工程结构:

1、app -> 测试工程。

2、mockserver -> http mock server

二、导入测试接口配置文件。

1、运行app,默认在sdcard里创建配置文件目录。

/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test

2、导入默认配置文件。

测试使用的配置文件在(mock_server/configuration_test)目录下。 

将mock_server/configuration_test下的所有文件导入到手机的/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test目录下。

  • mock_server_config.json文件定义了mockserver的基本信息和我们需要支持的接口信息。(get、post、static下是我们接口需要返回内容)
  • get 目录下对应所有get请求的接口
  • post目录对应所有post请求的接口
  • static目录对应所有需要请求的静态资源(音乐、图片)

 

三、再次运行APP,验证服务是否可用

再次运行app,点击static按钮,默认会展示出两张静态。如下图。说明我们的服务已经正常启动了。

四、个性化配置自己需要的接口和返回信息

打开mock_server_configuration.json配置文件。这个文件定义了服务器配置和我们需要的接口信息。

port:定义服务器端口。

base_path:定义我们服务器使用的sdcard根目录。后续的get、post、static返回信息都在这个base_path目录下。

get数组:定义所有get请求

uri:接口的URI

default_path:接口返回信息文件路径。比如login接口:我们默认的返回信息是get/login文件(get目录由代码自动添加)最后我们的login文件放在/sdcard/Android/data/com.macoli.dynamicmockserver/files/configuration_test/get/login

static:标识这个资源是否是静态资源,如果是静态资源,mockserver默认会去static目录下查找对应的文件。

五、根据访问参数动态返回信息

 比如登录接口输入用户名密码,我们需要根据用户名密码动态判断是否登录成功。

dynamic-mock-server支持我们添加destnation来支持动态判断参数的功能。


    private fun loginDestnation(destnationList : ArrayList<Destnation>) {
        val destnation : Destnation = Destnation()
        destnation.uri = "/login"
        destnation.destnation = "/login_success"
        val loginPredicate : (params : Map<String, List<String>>) -> Boolean = {
            val a : Boolean = (it.get("username")?.get(0) == "menshen")
            val b : Boolean = (it.get("password")?.get(0) == "woshildx")
            a && b
        }
        destnation.predicate = loginPredicate
        destnation.destnation = "/login_success"
        destnationList.add(destnation)
    }

Destnation内的成员参数和刚刚的配置文件对应,只是会多了一个predicate来进行判断校验。

predicate的输入参数为我们接口访问时输入的参数。例:http://127.0.0.1:8080/login?username=menshen&password=123456

对应的params则会有username和password两个key和对应的值,我们可以通过判断username和password是否合法,来决定是否返回login_success。本例中menshen、123456校验失败,则返回我们配置文件中定义的默认结果,否则返回login_success对应的文件内容。

浏览器里测试:http://127.0.0.1:8080/login?username=menshen&password=123456

我们会看到login faild的结果

浏览器里测试:http://127.0.0.1:8080/login?username=menshen&password=woshildx

我们会看到Welcom XXX的结果

这时我们打开login和login_success文件,你会发现这两个结果分别是预先定义在这两个文件内容中的。

六、自定义接口和参数校验配置

现在你可以通过修改mock_server_config.json 来自定义你的mock_server了。

注意修改完成后需要将文件push到手机对应的目录内。

当想要改变返回结果的时候只需要改变文件内容并重新push回手机即可,不需要重新运行项目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web 安全:PKI 扫盲

个人博客 在互联网世界&#xff0c;我们广泛采用 TLS 来保护通信安全&#xff0c;这里的安全主要包含两部分内容&#xff1a;身份鉴别、通信加密。身份鉴别是一切的基础&#xff0c;特别当发送消息比较敏感需要加密时&#xff0c;对接收方必然有一个身份“假设”&#xff0c;“…

MacBook Pro M1 Docker 环境安装 Nacos 2.x 版本

MacBook Pro M1 Docker 环境安装 Nacos 2.x 版本 前言 由于 rocksdb 暂不支持 M1 平台&#xff0c;所以使用 Zulu JDK 的小伙伴们运行 Nacos 2.x 版本会报错&#xff0c;网上通用的解决方案是使用 Oracle JDK 来运行 Nacos 2.x 版本&#xff0c;但对于强迫症的我来说&#xf…

图书管理系(统附源码PPT)

图书管理系统1 绪 论1.1 研究背景1.2 研究意义1.3 相关研究现状1.3.1 高校图书管理面临的问题1.3.2 信息化为图书管理带来新变化2 相关技术2.1 JSP 概述2.2 MySQL 数据库技术2.3 Spring2.4 SpringMVC2.5 Dbcp2.6 Maven3 系统分析3.1 需求分析3.1.1 系统的功能需求分析3.1.2 系统…

【Git】一文带你入门Git分布式版本控制系统(必要配置、工作原理、创建/克隆项目)

Git 系列文章目录 Git 专栏参考链接Git&#xff08;一&#xff09;【Git】一文带你入门Git分布式版本控制系统&#xff08;简介&#xff0c;安装&#xff0c;Linux命令&#xff09;文章目录Git 系列文章目录一、Git 的必要配置二、Git 的工作原理三、Git 项目创建1、创建本地项…

【kafka】十四、kafka生产者API

kafka Producer API 1.消息发送流程 kafka的producer发送消息采用的是异步发送的方式。在消息的发送过程中&#xff0c;涉及到了两个线程–main线程和sender线程&#xff0c;以及一个线程共享变量–RecordAccumulator。main线程将消息发送给RecordAccumulator&#xff0c;send…

单向环形链表介绍以及约瑟夫问题分析

❤️一名热爱Java的大一学生&#xff0c;希望与各位大佬共同学习进步❤️ &#x1f9d1;个人主页&#xff1a;周小末天天开心 各位大佬的点赞&#x1f44d; 收藏⭐ 关注✅&#xff0c;是本人学习的最大动力 感谢&#xff01; &#x1f4d5;该篇文章收录专栏—数据结构 目录 单…

不敲代码就能搭建个人博客?快解析内网穿透来助力

记得很多年前看到一句话&#xff0c;“博客是一个人的狂欢”。无论是享受搭建的过程&#xff0c;还是享受创作的乐趣&#xff0c;更多时候博客是在取悦自己。那么&#xff0c;在2022年的今天&#xff0c;搭建个人博客还有意义吗&#xff1f;答案是肯定的&#xff0c;当我们在搜…

Day4: 应用篇-1

应用篇-1 环境安装 应用开发交叉编译环境&#xff0c; 【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.7.pdf 章节4.3.1 在 Ubuntu 中创建目录&#xff1a;/usr/local/arm&#xff0c;命令如下&#xff1a; sudo mkdir /usr/local/arm令将交叉编译器复制到/usr/local/arm 中…

Arduino开发实例-DIY分贝测量仪

DIY分贝测量仪 1、应用介绍 分贝计,它通常用于测量声音的强度和水平。 声音响度是用分贝来衡量的。 从飞机到人类耳语的不同发声介质都有一定的声音响度,以分贝表示。 声波是具有来回运动的纵波,给出高音或低音,如图所示: 声音的响度取决于频率或波长或传播所需的时间。…

APK构建过程-命令行编译

官方对APK构建过程的介绍 官方 - 构建流程介绍 典型 Android 应用模块的构建流程&#xff0c;按照以下常规步骤执行&#xff1a; 编译器将您的源代码转换成 DEX 文件&#xff08;Dalvik 可执行文件&#xff0c;其中包括在 Android 设备上运行的字节码&#xff09;&#xff0c;…

【强化学习论文合集】专栏介绍(订阅前必读)

导读&#xff1a;什么是强化学习&#xff1f; 强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的…

AtCoder Beginner Contest 263 G.Erasing Prime Pairs(二分图最大匹配-网络流)

题目 黑板上有n(n<100)个不同的数&#xff0c;第i个数ai(1<ai<1e7)出现了bi(1<1e9)次&#xff0c; 你每次可以选择当前黑板上存在的两个数x、y&#xff0c;满足xy是质数&#xff0c;擦掉这两个数&#xff0c; 求可以擦掉的最大次数 思路来源 AtCoder Beginner…

[LeetCode周赛复盘] 第 321 场周赛20221127

[LeetCode周赛复盘] 第 321 场周赛20221127 一、本周周赛总结二、 [Easy] 6245. 找出中枢整数1. 题目描述2. 思路分析3. 代码实现三、[Medium]6246. 追加字符以获得子序列1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6247. 从链表中移除节点1. 题目描述2. 思路分析3. 代码实…

Docker-compose详解和LNMP搭建实战

目录 一、Docker-compose简介 1.前言 2.概述 二、Docker-compose安装 三、YAML文件格式及编写注意事项 1.简介 2.使用方法 四、Docker Compose 常用命令 五、Docker Compose 配置常用字段 六、Docker-compose搭建LNMP实战 一、Docker-compose简介 1.前言 我们知道使…

深度学习与总结JVM专辑(三):垃圾回收器—G1(图文+代码)

垃圾收集器G1前言概述停顿时间模型内存布局传统内存布局过时了G1实现的几个关键细节问题铺垫知识&#xff1a;跨代引用铺垫知识&#xff1a;记忆集&#xff0c;卡表&#xff0c;卡页铺垫知识&#xff1a;写屏障插眼往下看G1内存模型分区Region卡片Card堆Heap分代模型分代垃圾收…

网站分享:7个非常好用的电子书网站

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、 C#、 Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&…

Steam下载MOD至本地文件夹

Steam下载MOD至本地文件夹1 所需app和web2 具体步骤2.1 安装SteamCMD2.2 登录SteamCMD2.3 打开网页端的Steam并搜索你想要的MOD2.4 点击你需要的MOD&#xff0c;并复制链接2.5 将链接放入 https://steamworkshopdownloader.io/2.6 把下载代码放入SteamCMD由于各种原因&#xff…

OpenVINO--初步学习笔记

英特尔发布的针对AI工作负载的一款部署神器当模型训练结束后&#xff0c;上线部署时&#xff0c;就会遇到各种问题&#xff0c;比如&#xff0c;模型性能是否满足线上要求&#xff0c;模型如何嵌入到原有工程系统&#xff0c;推理线程的并发路数是否满足&#xff0c;这些问题决…

java项目_第164期ssm定西扶贫惠农推介系统-_java毕业设计_计算机毕业设计

java项目_第164期ssm定西扶贫惠农推介系统-_java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm定西扶贫惠农推介系统》 该项目分为2个角色&#xff0c;管理员和用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、扶贫计划、惠农福利、优秀农民…

【C++】vector的介绍和使用

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;vector 的…