我的编程空间,编程开发者的网络收藏夹
学习永远不晚

springboot如何实现mock平台

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

springboot如何实现mock平台

这篇文章主要介绍了springboot如何实现mock平台的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot如何实现mock平台文章都会有所收获,下面我们一起来看看吧。

一、实现场景:

1.1请求同一个接口,不同的传参/ip返回的结果不一样。

数据的匹配

以create_account接口为例,参数有accountId
accountId=123,返回成功
accountId=456,返回失败
accountId=456,accountName=zhangsan,返回处理中
ip=123.123.123.1 返回成功
ip=123.123.123.2 返回失败

解决方案:

将数据存储在yml文件里。如create_account接口,只返回一个固定的结果,那么我们就将返回值放到一个yml文件里。

如create_name接口,根据传参不同,返回不同的id。一个接口对应一个文件夹, 将create_name接口的返回值写多个yml文件,放到同一个文件夹里。然后再去匹配。

1.2 返回的结果不是写死的,是动态数据,需要对数据进行处理

  • response: {xxxxx,"orderId":123456}

  • response: {xxxxx,"orderId":123456}

  • response: {xxxxx,"createTime":123456}

返回的数据中不能全部都是写死的,有的可能是随机的id,有的可能是时间戳,还有的可能是固定格式的数据

实际业务有一个case: 要返回merId:xxxx, 但是这个merId的获取,是要从别的业务的接口中获取返回信息。

1.3 回调能力

就是外部请求到我mock服务之后,我mock服务做了返回,但同时我会按照要求给它去完成某些能力,如:

  • 调http

  • 调公司内部的RPC

  • 或mq

  • 还有可能是写某个db.

1.4响应时间

比如服务调我们的mock时,我们是直接给返回。

那要是模拟一下真实的服务处理,比如处理超时,假设用时 3秒在返回。

模拟超时处理

思考: 如果你做线上压测的时候,相应时间不能给返回一个固定值,所以返回是一个区间的概率。

1.5 hook参数

比如请求的时候,请求参数携带一个requestId, 然后requestId本身还是个变化的,也是随机的。

然后在返回的时候,要把这个id带回去,即:虽然返回数据不能写死,但是你也不能自己生成,需要使用请求的参数。

1.6 透传请求

比如10个请求,请求mock服务,其中参数id=123的走mock,id=456的走真实的服务。

所以这个时候如果我们判断id=456了,我们需要去自己真实的拿着请求的参数,我们再去调真实服务。

拿到返回结果,在返回给调用端。

总结:
其实就是把数据源放在文件里,根据用户的传参,对数据进行处理,然后再返回。

二、依赖

springframework.boot 用的2.4.4版本

pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.4.4</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.example</groupId>    <artifactId>AutoApi</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>AutoApi</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>         <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>org.yaml</groupId>            <artifactId>snakeyaml</artifactId>            <version>1.26</version>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>            <version>1.18.16</version>            <scope>provided</scope>        </dependency>        <dependency>            <groupId>com.google.guava</groupId>            <artifactId>guava</artifactId>            <version>30.1.1-jre</version>        </dependency>        <dependency>            <groupId>org.apache.commons</groupId>            <artifactId>commons-lang3</artifactId>            <version>3.11</version>        </dependency>        <dependency>            <groupId>com.squareup.okhttp3</groupId>            <artifactId>okhttp</artifactId>            <version>4.9.0</version>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>2.6</version>        </dependency>        <dependency>            <groupId>com.google.code.gson</groupId>            <artifactId>gson</artifactId>            <version>2.8.6</version>        </dependency>        <dependency>            <groupId>com.fasterxml.jackson.dataformat</groupId>            <artifactId>jackson-dataformat-yaml</artifactId>            <version>2.12.3</version>        </dependency>        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-jdbc</artifactId>            <version>5.3.8</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.20</version>        </dependency>        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid</artifactId>            <version>1.2.6</version>        </dependency>        <dependency>            <groupId>cn.hutool</groupId>            <artifactId>hutool-core</artifactId>            <version>5.7.5</version>        </dependency>     </dependencies>     <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build> </project>

三、开始写

3.1 新建一个controller,简单的建一个服务,试试是否能ping通

springboot如何实现mock平台

PingController

package com.example.mockserver.controller; import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestControllerpublic class PingController {     @RequestMapping("/ping")    public String ping(){        return "ok";     }}

要有@RestController 注解

修改application.properties 格式,换成yml  application.yml 。并指定端口号。

application.yml

server:  port: 8081

启动spring boot ,运行 MockServerApplication 。访问一下127.0.0.1:8081/ping。

返回ok就是正常的。

3.2   新建MockController1,/** 这里指的是任意的URI

MockController1

package com.example.mockserver.controller; import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestControllerpublic class MockController1 {     @RequestMapping("/**")    public String doMock(){        return "do mock server";    }}

"/**" 这里指的是任意的URI 。启动服务,当请求ping时返回ok,请求其他任何URL时,返回 do mock server

关于“springboot如何实现mock平台”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“springboot如何实现mock平台”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

springboot如何实现mock平台

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

springboot如何实现mock平台

这篇文章主要介绍了springboot如何实现mock平台的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot如何实现mock平台文章都会有所收获,下面我们一起来看看吧。一、实现场景:1.1请求同
2023-07-02

Java兼职平台系统如何实现

本篇内容介绍了“Java兼职平台系统如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、项目运行环境配置:Jdk1.8 + Tomca
2023-06-29

uniapp如何实现的多平台适应

近年来,随着移动互联网的迅猛发展,多端适应已经成为开发者不可避免的问题之一。而现在最流行的一种技术便是uni-app,它可以让开发者用一套代码,快速开发出适于多种平台的应用,并具有完美的用户体验和可扩展性,那么uni-app如何实现的多平台适应呢?本文将深入介绍。 一、uni-app是什么?uni-app是一个基于Vue.js框架,通过编写Vue语法来搭建多端应用程序的全新开发
2023-05-14

[平台建设] 大数据平台如何实现任务日志采集

本文主要介绍如何基于log4j appender自定义扩展实现大数据平台任务日志采集. 背景平台任务主要分3种: flink实时任务, spark任务,还有java任务,spark、flink 我们是运行在yarn 上, 日常排错我们通过查看yarn l
[平台建设] 大数据平台如何实现任务日志采集
2018-05-22

springboot vue测试平台接口定义及发送请求功能如何实现

这篇文章主要介绍了springboot vue测试平台接口定义及发送请求功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot vue测试平台接口定义及发送请求功能如何实现文章都会有所收
2023-06-30

springboot vue测试平台接口定义前后端新增功能如何实现

这篇文章主要介绍“springboot vue测试平台接口定义前后端新增功能如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot vue测试平台接口定义前后端新增功能如何实现”
2023-06-30

Java如何实现家政服务平台系统

这期内容当中小编将会给大家带来有关Java如何实现家政服务平台系统,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、项目简述功能包括: 家政服务网站系统,用户注册,登录,分为家政人员,普 通用户,以及最高
2023-06-25

基于Springboot的漫画网站平台设计与实现

本文将基于Springboot实现开发一个漫画主题的网站,实现一个比漂亮的动漫连载的网站系统,界面设计优雅大方,比较适合做毕业设计和课程设计使用,需要的可以参考一下
2022-11-13

Java如何实现精美网上音乐平台

这篇文章主要介绍Java如何实现精美网上音乐平台,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、项目简述本系统功能包括: 音乐播放 用户登录注册 用户信息编辑、头像修改 歌曲、歌单搜索 歌单打分 歌单、歌曲评论 歌
2023-06-25

Linux平台如何实现划词翻译工具

这篇文章将为大家详细讲解有关Linux平台如何实现划词翻译工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。所实现的划词翻译工具主要有以下特性:支持英文单词和短语到中文的翻译划词翻译,终端显示自动过滤选中
2023-06-15

SpringMVC+Mybatis二维码如何实现多平台付款

小编给大家分享一下SpringMVC+Mybatis二维码如何实现多平台付款,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整体思路:实现微信支付宝等支付平台合多为
2023-06-20

JavaScript如何实现电商平台商品细节图

这篇文章给大家分享的是有关JavaScript如何实现电商平台商品细节图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。某电商平台效果图展示:本案例代码部分:HTML结构:
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录