Mmock是一款面向开发者的测试和快速原型设计工具,作为轻量级HTTP模拟服务器,它允许开发者通过JSON或YAML文件定义模拟规则,配置应用端点使用模拟服务,并在Web界面中 inspect 请求数据。Mmock采用Go语言构建,无需安装即可在多平台运行,适用于API测试、服务原型设计、状态模拟等场景。
/hello/:name)*hello*)bashdocker image pull jordimartin/mmock
bashdocker run -v YOUR_ABS_PATH:/config -p 8082:8082 -p 8083:8083 jordimartin/mmock
-v YOUR_ABS_PATH:/config:挂载本地目录到容器内的/config,用于存放模拟规则文件(JSON/YAML)-p 8082:8082:映射Web控制台端口-p 8083:8083:映射模拟服务器端口模拟规则通过JSON或YAML文件定义,存放于挂载的/config目录中。
json{ "request": { "method": "GET", "path": "/hello/*" }, "response": { "statusCode": 200, "headers": { "Content-Type": ["application/json"] }, "body": "{\"hello\": \"{{request.query.name}}, my name is {{fake.FirstName}}\"}" } }
yaml--- request: method: GET path: "/hello/*" response: statusCode: 200 headers: Content-Type: - application/json body: '{"hello": "{{request.query.name}}, my name is {{fake.FirstName}}"}'
定义匹配条件,包含以下字段:
host:请求主机名(不含端口)method:HTTP方法(必填,支持多方法用|分隔,如GET|POST)path:资源路径(必填,支持:variable命名参数和通配符)queryStringParameters:查询字符串参数(支持多值)headers:请求头(区分大小写,支持多值)cookies:Cookie键值对body:请求体(支持通配符匹配)定义匹配后的响应,包含:
statusCode:HTTP状态码(如200、404、500)headers:响应头(支持多值和变量)cookies:响应Cookie(支持变量)body:响应体(支持变量)高级配置选项:
scenario:场景配置(name场景名称、requiredState当前所需状态、newState匹配后新状态)proxyBaseURL:代理基础URL(将请求转发至该URL,无需定义response)delay:响应延迟(秒,模拟网络或服务器性能问题)crazy:是否启用疯狂模式(随机返回5xx错误,模拟服务器故障)priority:匹配优先级(数值越高优先级越高,避免被宽松规则匹配)webHookURL:匹配后通知的WebHook端点响应中可使用变量标签{{nameVar}},支持以下类型:
提取请求中的数据:
request.scheme:请求协议(http/https)request.hostname:主机名request.port:端口request.path:完整路径request.path."key":路径中的命名参数(如/user/:id对应request.path.id)request.query."key":查询参数(如?name=test对应request.query.name)request.cookie."key":Cookie值request.url:完整URL(含协议、主机、端口、路径和查询参数)request.body:请求体(支持JSON/XML/表单数据的键值提取,如request.body.user.name)生成随机测试数据:
fake.FirstName:名fake.LastName:姓fake.FullName:全名fake.EmailAddress:***fake.City:城市fake.Country:国家fake.IPv4:IPv4地址fake.UUID:UUIDfake.Int(n):小于n的随机整数fake.Word:随机单词file.contents(FILE_PATH):读取文件内容http.contents(URL):获取URL响应内容场景用于模拟有状态服务,通过状态机管理服务行为。默认初始状态为not_started,可通过requiredState指定匹配所需状态,newState设置匹配后的新状态。
示例流程:
GET /user 需状态created,返回404POST /user 需状态not_started,返回201并更新状态为createdGET /user 需状态created,返回200Mmock提供REST API用于管理请求、场景和模拟规则:
GET /api/request/all:获取所有请求记录GET /api/request/matched:获取所有匹配的请求POST /api/request/verify:验证是否收到匹配特定规则的请求GET /api/scenarios/reset_all:重置所有场景状态PUT /api/scenarios/set/:scenario/:state:设置场景状态PUT /api/scenarios/pause:暂停场景状态更新PUT /api/scenarios/unpause:恢复场景状态更新GET /api/mapping:获取所有模拟规则POST /api/mapping/:uri:创建模拟规则PUT /api/mapping/:uri:更新模拟规则DELETE /api/mapping/:uri:删除模拟规则Mmock默认收集***使用统计(如模拟请求数、控制台使用次数等),可通过启动参数-server-statistics=false禁用。
通过命令行参数配置Mmock(Docker运行时可添加至docker run命令末尾):
-config-path string 模拟规则目录(默认"execution_path/config") -console bool 是否启用控制台(默认true) -console-ip string 控制台IP(默认公共IP) -console-port int 控制台端口(默认8082) -request-storage-capacity int 请求存储容量(0为无限,默认100) -server-ip string 模拟服务器IP(默认公共IP) -server-port int 模拟服务器端口(默认8083) -server-statistics bool 是否启用统计(默认true) -server-tls-port int TLS端口(默认8084) -tls-path string TLS配置目录(默认"execution_path/tls")
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429