Mock神器:Easy-Mock 私有化部署及使用介绍

th.jpg

在现代前后端分离的开发模式中,后端接口的数据模拟是一个常见且必要的需求。尤其是在后端接口尚未开发完成时,前端开发需要依赖模拟数据进行开发与测试。Easy-Mock 是一个非常流行的开源工具(虽然它已经停止更新好长时间了),它可以帮助我们快速模拟 RESTful API 接口,支持 JSON 数据返回、接口路由配置等功能,极大地提高了前后端协作的效率。

在实际的企业应用中,出于安全性、隐私保护或自定义需求,很多团队需要将 Easy-Mock 部署为私有化服务。本文将介绍如何将 Easy-Mock 部署到本地服务器或私有云环境中,并提供一些基本的使用指南。

介绍

Easy Mock 是一个可视化,并且能快速生成模拟数据的持久化服务。可私有化部署

特性

  • 支持接口代理
  • 支持快捷键操作
  • 支持协同编辑
  • 支持团队项目
  • 支持 RESTful
  • 支持 Swagger | OpenAPI Specification (1.2 & 2.0 & 3.0)
    • 基于 Swagger 快速创建项目
    • 支持显示接口入参与返回值
    • 支持显示实体类
  • 支持灵活性与扩展性更高的响应式数据开发
  • 支持自定义响应配置(例:status/headers/cookies)
  • 支持 Mock.js 语法
  • 支持 restc 方式的接口预览

github地址:https://github.com/easy-mock/easy-mock

_20241209153404.jpg

私有化部署

我直接使用的是docker部署的,作者再dockerhub上提供了一个镜像https://hub.docker.com/r/easymock/easymock

_20241209154219.jpg

此服务依赖redis和mongodb,我之前部署过redis和mongodb,所以此处仅需要部署web服务就可以了。

创建docker-compose.yml

首先,我们再服务器上创建一个部署目录easymock,在此目录下创建docker-compose.yml文件,内容如下:

docker-compose.yml

services:web:image: registry.cn-hangzhou.aliyuncs.com/xjpublic/easymock:latestcommand: /bin/bash -c "npm start"ports:- 7300:7300volumes:# 日志地址,根据需要修改为本地地址- ./logs:/home/easy-mock/easy-mock/logs# 配置地址,请使用本地配置地址替换- ./production.json:/home/easy-mock/easy-mock/config/production.json# 上传文件- ./public:/home/easy-mock/easy-mock/publicrestart: always

官方镜像是easymock/easymock:1.6.0,我在这转存到阿里云镜像仓库中了,下载不下来的家人可以使用我阿里云镜像仓库中的镜像。

创建production.json配置文件

在docker-compose.yml同级目录下创建production.json配置文件,文件需要给其它用户赋予读权限sudo chmod +r production.json,文件内容如下:

production.json

{"port": 7300,"host": "0.0.0.0","pageSize": 30,"proxy": false,"db": "mongodb://root:123456@192.168.31.20:27017/easy-mock","unsplashClientId": "","redis": {"keyPrefix": "[Easy Mock]","port": 6379,"host": "192.168.31.20","password": "123456","db": 0},"blackList": {"projects": [],"ips": []},"rateLimit": {"max": 1000,"duration": 1000},"jwt": {"expire": "14 days","secret": "shared-secret"},"upload": {"types": [".jpg", ".jpeg", ".png", ".gif", ".json", ".yml", ".yaml"],"size": 5242880,"dir": "../public/upload","expire": {"types": [".json", ".yml", ".yaml"],"day": -1}},"ldap": {"server": "","bindDN": "","password": "","filter": {"base": "","attributeName": ""}},"fe": {"copyright": "","storageNamespace": "easy-mock_","timeout": 25000,"publicPath": "/dist/"}
}

需要注意修改的配置文件是mongodb的连接地址,用户密码及数据库,redis的连接地址及密码

启动服务

配置好之后,在docker-compose.yml同级目录下执行以下命令启动服务

docker-compose up -d 

查看容器启动日志:

docker-compose logs -f

如果出现以下日志:

_20241209094336.jpg

则为日志文件权限问题,给挂载日志目录logs赋予权限

sudo chmod -R 777 logs

之后重启容器,出现以下日志则说明启动成功了

_20241209160805.jpg

服务使用

在浏览器中打开地址 http://192.168.31.20:7300 打开服务,输入用户名密码登录系统,如果用户之前没有,则会注册

_20241209164213.jpg

登录之后创建项目,创建接口,具体步揍可查看文档
_20241209164422.jpg

我们创建接口之后配置响应数据,Easy Mock 引入了 Mock.js,下面我们演示两个接口。更详尽的用例及文档请参考 Mock.js 官网。

  • 配置响应数据(随机数据)
{"code": 200,"data|10": [{"string|1-2": "@string","integer": "@integer(10, 30)","float": "@float(60, 100, 2, 2)","boolean": "@boolean","date": "@date(yyyy-MM-dd)","datetime": "@datetime","now": "@now","url": "@url","email": "@email","region": "@region","city": "@city","province": "@province","county": "@county","upper": "@upper(@title)","guid": "@guid","id": "@id","image": "@image(200x200)","title": "@title","cparagraph": "@cparagraph","csentence": "@csentence"}]
}

_20241209165001.jpg

数据响应

_20241209165156.jpg

  • 配置响应数据(函数)
{code: function({_req}) {if (_req.body.username && _req.body.password && _req.body.username === 'admin' && _req.body.password === '111') {return 200} else {return 500}},token: function({_req}) {if (_req.body.username && _req.body.password && _req.body.username === 'admin' && _req.body.password === '111') {return "1111"} else {return}},msg: function({_req}) {if (_req.body.username && _req.body.password && _req.body.username === 'admin' && _req.body.password === '111') {return "成功"} else {return "失败"}}}

数据响应

_20241209165619.jpg

_20241209165638.jpg

总结

Easy-Mock 是一个非常实用的模拟数据工具,尤其在前后端分离开发的场景中,可以极大地提高前端开发效率。通过将 Easy-Mock 部署为私有化服务,你可以完全掌控模拟数据的生成和管理,同时保障数据的安全性和隐私性。

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

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

相关文章

Java的Mvc整合Swagger的knife4框架

Swagger的介绍 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。使用Swagger,就是把相关的信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述 文件可以去更…

01_Node.js入门 (黑马)

01_Node.js入门 知识点自测 从 index.js 出发&#xff0c;访问到 student/data.json 的相对路径如何写? A&#xff1a;../public/teacher/data.json B&#xff1a;./public/student/data.json C&#xff1a;../student/data.json <details><summary>答案</sum…

2024.12.5——攻防世界Training-WWW-Robots攻防世界baby_web

2024.12.5—攻防世界Training-WWW-Robots 知识点&#xff1a;robots协议 dirsearch工具 本题与第一道Robots协议十分类似&#xff0c;不做wp解析 大致步骤&#xff1a; step 1 打开靶机&#xff0c;发现是robots协议相关 step 2 用dirsearch进行扫描目录 step 3 url传参r…

电脑无法识别usb设备怎么办?电脑无法识别usb解决方法

usb设备是我们常解除的外部操作以及存储设备&#xff0c;它可以方便用户数据传输以及操作输入。但在使用过程中&#xff0c;大家基本都碰到过电脑无法识别usb设备这种情况。这种情况下&#xff0c;我们应该怎么办呢&#xff1f;下面将为你介绍几种可能的原因和解决方法&#xf…

【学习总结|DAY014】Java面向对象高级-继承、多态

一、继承&#xff08;Inheritance&#xff09; 1. 概述 继承是面向对象编程的一种特性&#xff0c;允许我们定义一个类&#xff08;称为子类或派生类&#xff09;以继承另一个类&#xff08;称为超类或基类&#xff09;的功能。 2. 语法格式 public class Zi extends Fu {/…

筑起厂区安全--叉车安全防护装置全解析

在繁忙的工业生产领域中&#xff0c;叉车作为搬运工&#xff0c;穿梭于仓储与生产线之间。然而&#xff0c;叉车的高效运作背后&#xff0c;也隐藏着诸多安全风险&#xff0c;尤其是在那些空间狭小、物流繁忙的环境中。为了降低这些潜在的危险&#xff0c;叉车安全防护装置便成…

MS SQL SERVER服务自动停止解决

报错原因 电脑异常重启&#xff0c;导致 MS SQL server 服务启动后自动停止&#xff0c;在【计算机管理】-【事件查看器】-【windows日志】中进行查看系统错误日志&#xff0c;在【应用程序】下发现可能的错误信息&#xff1a; 传递给数据库 ‘model’ 中的日志扫描操作的日志…

网络安全信息收集(总结)更新

目录 重点&#xff1a; 前言&#xff1a; 又学到了&#xff0c;就是我们什么时候要子域名收集&#xff0c;什么时候收集域名&#xff0c;重点应该放前面 思考&#xff1a; 信息收集分为哪几类&#xff0c;什么是主域名&#xff0c;为什么要收集主域名&#xff0c;为什么要收…

使用 Postman 上传二进制类型的图片到后端接口写法

我们有的时候会有需求&#xff0c;就是通过 postman 传递二进制图片到后端接口&#xff0c;如下图&#xff1a; 那我们的 Java 接口需要怎么写呢&#xff1f; Spring Boot 接收这些数据的方式需要使用 RequestBody 注解来处理原始的二进制数据&#xff08;byte[]&#xff09;。…

Java Web 7 请求响应(Postman)

前言&#xff08;SpringBoot程序请求响应流程&#xff09; 以上一章的程序为例&#xff0c;一个基于SpringBoot的方式开发一个web应用&#xff0c;浏览器发起请求 /hello 后 &#xff0c;给浏览器返回字符串 “Hello World ~”。 而我们在开发web程序时呢&#xff0c;定义了一…

pytorch多GPU训练教程

pytorch多GPU训练教程 文章目录 pytorch多GPU训练教程1. Torch 的两种并行化模型封装1.1 DataParallel1.2 DistributedDataParallel 2. 多GPU训练的三种架构组织方式2.2 数据不拆分&#xff0c;模型拆分&#xff08;Model Parallelism&#xff09;2.3 数据拆分&#xff0c;模型…

【opencv入门教程】9.视频加载

文章选自&#xff1a; 一、VideoCapture类 用于从视频文件、图像序列或摄像头捕获视频的类。函数&#xff1a;CV_WRAP VideoCapture();brief 默认构造函数CV_WRAP explicit VideoCapture(const String& filename, int apiPreference CAP_ANY);brief 使用 API 首选项打开…

海外的bug-hunters,不一样的403bypass

一种绕过403的新技术&#xff0c;跟大家分享一下。研究HTTP协议已经有一段时间了。发现HTTP协议的1.0版本可以绕过403。于是开始对lyncdiscover.microsoft.com域做FUZZ并且发现了几个403Forbidden的文件。 &#xff08;访问fsip.svc为403&#xff09; 在经过尝试后&#xff0…

阿里内部正式开源“Spring Cloud Alibaba (全彩小册)”

年轻的毕业生们满怀希望与忐忑&#xff0c;去寻找、竞争一个工作机会。已经在职的开发同学&#xff0c;也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而&#xff0c;面试人群众多&#xff0c;技术市场却相对冷淡&#xff0c;面试的同学们不得不面临着 1 个…

乘上 SpringBoot 东风,广场舞团掀起律动热潮

2 系统开发环境 2.1 Java技术 Java是由Sun公司推出的一门跨平台的面向对象的程序设计语言。因为Java 技术具有卓越的通用性、高效性、健壮的安全性和平台移植性的特点&#xff0c;而且Java是开源的&#xff0c;拥有全世界最大的开发者专业社群&#xff0c;所以Java的发展迅速。…

【PlantUML系列】状态图(六)

一、状态图的组成部分 状态&#xff1a;对象在其生命周期内可能处于的条件或情形&#xff0c;使用 state "State Name" as Statename 表示。初始状态&#xff1a;表示对象生命周期的开始&#xff0c;使用 [*] 表示。最终状态&#xff1a;表示对象生命周期的结束&…

创建 React Native 项目

创建 React Native 项目 npx react-nativelatest init YourProject切换依赖源 切换好源之后&#xff0c;你需要进入 android 目录&#xff0c;然后运行 gradlew build 命令。 Android 依赖安装是使用 gradlew 进行管理的。 $ cd android $ ./gradlew build --refresh-depend…

Linx下自动化之路:Redis安装包一键安装脚本实现无网极速部署并注册成服务

目录 简介 安装包下载 安装脚本 服务常用命令 简介 通过一键安装脚本实现 Redis 安装包的无网极速部署&#xff0c;并将其成功注册为系统服务&#xff0c;开机自启。 安装包下载 redis-7.0.8.tar.gzhttp://download.redis.io/releases/redis-7.0.8.tar.gz 安装脚本 修…

Meta Llama 3.3 70B:性能卓越且成本效益的新选择

Meta Llama 3.3 70B&#xff1a;性能卓越且成本效益的新选择 引言 在人工智能领域&#xff0c;大型语言模型一直是研究和应用的热点。Meta公司最近发布了其最新的Llama系列模型——Llama 3.3 70B&#xff0c;这是一个具有70亿参数的生成式AI模型&#xff0c;它在性能上与4050…

idea_maven详解

秒懂Maven maven简介maven安装和配置maven本地配置maven工程的GAVP创建maven工程项目结构说明项目构建说明 Maven依赖管理核心信息配置依赖管理配置依赖信息查询依赖范围设置依赖属性配置依赖下载失败错误解决Build构建配置依赖传递依赖冲突 maven工程继承继承作用应用场景继承…