返回顶部
首页 > 资讯 > 精选 >springboot如何实现mock平台
  • 636
分享到

springboot如何实现mock平台

2023-07-02 13:07:11 636人浏览 独家记忆
摘要

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

这篇文章主要介绍了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平台”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: springboot如何实现mock平台

本文链接: https://lsjlt.com/news/342079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot如何实现mock平台
    这篇文章主要介绍了springboot如何实现mock平台的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot如何实现mock平台文章都会有所收获,下面我们一起来看看吧。一、实现场景:1.1请求同...
    99+
    2023-07-02
  • springboot实现mock平台的示例代码
    目录一、实现场景:1.1请求同一个接口,不同的传参/ip返回的结果不一样。1.2 返回的结果不是写死的,是动态数据,需要对数据进行处理1.3 回调能力1.4响应时间1.5 hook参...
    99+
    2024-04-02
  • express+mock如何实现前后台并行开发
    小编给大家分享一下express+mock如何实现前后台并行开发,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!express +...
    99+
    2024-04-02
  • Java兼职平台系统如何实现
    本篇内容介绍了“Java兼职平台系统如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、项目运行环境配置:Jdk1.8 + Tomca...
    99+
    2023-06-29
  • uniapp如何实现的多平台适应
    近年来,随着移动互联网的迅猛发展,多端适应已经成为开发者不可避免的问题之一。而现在最流行的一种技术便是uni-app,它可以让开发者用一套代码,快速开发出适于多种平台的应用,并具有完美的用户体验和可扩展性,那么uni-app如何实现的多平台...
    99+
    2023-05-14
  • [平台建设] 大数据平台如何实现任务日志采集
    本文主要介绍如何基于log4j appender自定义扩展实现大数据平台任务日志采集. 背景 平台任务主要分3种: flink实时任务, spark任务,还有java任务,spark、flin...
    99+
    2018-05-22
    [平台建设] 大数据平台如何实现任务日志采集
  • golang实现跨平台
    Golang是一种以高效并发和低延迟为设计目标的编程语言。由于其编译速度快、内存管理简单、语法简洁而受到越来越多的程序员的喜欢。在跨平台方面,Golang也有其独特的优势,本文将介绍Golang如何实现跨平台。一、Golang跨平台的优势语...
    99+
    2023-05-15
  • springboot vue测试平台接口定义及发送请求功能如何实现
    这篇文章主要介绍了springboot vue测试平台接口定义及发送请求功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot vue测试平台接口定义及发送请求功能如...
    99+
    2023-06-30
  • springboot vue测试平台接口定义前后端新增功能如何实现
    这篇文章主要介绍“springboot vue测试平台接口定义前后端新增功能如何实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot vue测试平台接口定义前后...
    99+
    2023-06-30
  • 基于Springboot的漫画网站平台设计与实现
    目录一、项目简介二、环境介绍三、系统展示四、核心代码展示五、项目总结一、项目简介 本项目基于Springboot实现开发了一个漫画主题的网站,实现了一个比漂亮的动漫连载的网站系统。前...
    99+
    2022-11-13
    Springboot漫画网站平台 Springboot 漫画网站 Springboot 网站
  • VS Code和PlantUML如何实现跨平台设计
    这篇文章主要为大家展示了“VS Code和PlantUML如何实现跨平台设计”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VS Code和PlantUML如何实...
    99+
    2024-04-02
  • Linux平台如何实现划词翻译工具
    这篇文章将为大家详细讲解有关Linux平台如何实现划词翻译工具,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。所实现的划词翻译工具主要有以下特性:支持英文单词和短语到中文的翻译划词翻译,终端显示自动过滤选中...
    99+
    2023-06-15
  • Java如何实现家政服务平台系统
    这期内容当中小编将会给大家带来有关Java如何实现家政服务平台系统,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、项目简述功能包括: 家政服务网站系统,用户注册,登录,分为家政人员,普 通用户,以及最高...
    99+
    2023-06-25
  • Java如何实现精美网上音乐平台
    这篇文章主要介绍Java如何实现精美网上音乐平台,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、项目简述本系统功能包括: 音乐播放 用户登录注册 用户信息编辑、头像修改 歌曲、歌单搜索 歌单打分 歌单、歌曲评论 歌...
    99+
    2023-06-25
  • Windows 平台下,PHP 和 Numpy 如何实现同步?
    在开发过程中,我们经常需要在不同的语言和平台之间进行数据传输和交互。在本文中,我们将探讨在 Windows 平台下如何实现 PHP 和 Numpy 的同步。 首先,我们需要明确什么是 PHP 和 Numpy。PHP 是一种广泛用于 Web ...
    99+
    2023-11-08
    windows numpy 同步
  • springboot+VUE前后端分离实现疫情防疫平台JAVA
    目录主要模块:系统主要实现如下:登录之后进入系统首页:目前系统主要功能如下用户管理模块:用户添加、修改、删除、查询等基本操作角色管理模块、通过用户绑定角色、角色控制菜单显示、灵活控制...
    99+
    2024-04-02
  • 基于Java+Springboot+Vue+elememt美食论坛平台设计实现
    博主介绍:✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌  🍅文末获取联系...
    99+
    2023-09-15
    java项目实战 前后端分离项目 美食论坛系统 美食分享系统 springboot
  • ASP.NET 5是如何通过XRE实现跨平台的
    这篇文章给大家介绍ASP.NET 5是如何通过XRE实现跨平台的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。.NET程序员也有自己的幸福,.NET的跨平台是一种幸福,.NET的开源也是一种幸福,而更幸福的是可以通过开...
    99+
    2023-06-17
  • SpringMVC+Mybatis二维码如何实现多平台付款
    小编给大家分享一下SpringMVC+Mybatis二维码如何实现多平台付款,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整体思路:实现微信支付宝等支付平台合多为...
    99+
    2023-06-20
  • JavaScript如何实现电商平台商品细节图
    这篇文章给大家分享的是有关JavaScript如何实现电商平台商品细节图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。某电商平台效果图展示:本案例代码部分:HTML结构:<div class=&q...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作