# MockJson **Repository Path**: handloong/mockjson ## Basic Information - **Project Name**: MockJson - **Description**: MockJson ,模拟你的Json,一个Api模拟器,用于和厂商 或者 和其他人在网络传输不方便的情况下或者本地调试数据来生成动态的WebAPI - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2021-07-09 - **Last Updated**: 2026-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MockJson 一个轻量级的 **API 模拟器(Mock Server)**。当你与厂商或他人协作时,常会遇到网络不通、接口未就绪、需要本地调试数据等情况——MockJson 可以让你在本地快速搭起一套动态 WebAPI,模拟不同场景的数据返回,大幅提升开发与联调效率。 > 基于 `.NET Framework 4.5` + `WinForms` + `Nancy` 自托管,数据存储使用 `FreeSql + SQLite`,开箱即用,无需额外安装数据库。 ## ✨ 功能特性 - **接口管理**:图形化创建、编辑、删除接口,支持 `GET` / `POST` / `PUT` / `DELETE` 请求方法。 - **接口分组**:接口可按组归类,列表分组折叠展示(组头带数量),支持分组的新增 / 重命名 / 删除,方便大量接口时快速查找。 - **多响应策略**:同一接口可配置多个返回值,通过「权重」实现加权随机返回,模拟不同场景。 - **请求条件匹配**:响应可按 Query 参数 / Body 内容 / 请求头配置匹配条件,命中才返回,实现「同一路径不同参数返回不同结果」。 - **自定义状态码**:每个响应可自定义 HTTP 状态码,模拟 `401` / `403` / `500` / `502` 等错误场景。 - **响应延迟模拟**:每个响应可配置延迟(毫秒),模拟慢接口 / 超时场景。 - **自定义响应头**:每个响应可配置多个响应头(Key / Value / 启用开关),支持一键导入浏览器复制的请求头。 - **动态响应内容**:响应值支持模板变量 `{{timestamp}}`、`{{uuid}}`、`{{randomInt}}`、`{{query.xxx}}` 等,返回数据动态变化。 - **响应类型**:支持 `application/json`、`text/plain`、`text/html`,内置 Json 一键美化。 - **文件下载模拟**:可指定本地文件,模拟文件下载接口(`Content-Disposition: attachment`)。 - **系统托盘**:支持最小化到系统托盘,右键菜单快速启动 / 停止服务、打开设置。 - **接口导入 / 导出**:支持 `.mockjson` 格式导入导出(含接口分组信息),方便备份与迁移。 - **请求日志**:自动记录每次请求的方法、路径、参数、状态码、耗时、响应大小与返回值,双击可查看详情。 - **请求重放**:一键把历史请求(含 Query / Body / Header)原样重发,支持自定义目标地址(默认本机 Mock,可改为真实后端对比),快速复现问题。 - **重放环境**:可维护多个环境(如开发 / 测试 / 生产),重放时一键切换目标服务器,类似 ApiPost 的环境。 - **请求测试(内置 Postman)**:内置 HTTP 客户端,支持 `GET` / `POST` / `PUT` / `DELETE` / `PATCH` 方法,请求头 key-value 编辑、请求体支持 JSON / 文本 / 表单 / 文件上传,多 Tab 同时编辑多个接口,可切换环境、查看响应与发送历史,无需再开 Postman / ApiPost。 - **日志导出**:支持导出「最近 200 条 / 全部」日志为 CSV(带进度条),一键清空日志(含 VACUUM 收缩)。 - **单实例运行**:同目录只启动一个实例,重复启动自动唤起已运行窗口。 - **命令行工具**:提供 `MockJson.Cli`,支持 `--ip` / `--port` 无界面启动,方便脚本化 / CI。 - **服务配置**:自定义监听 IP / 端口。 - **CORS 跨域支持**:默认开启(允许来源 `*`,可在系统设置中调整;多个来源用英文逗号分隔,如 `https://a.com, https://b.com`),自动附加 `Access-Control-Allow-*` 响应头并响应预检(OPTIONS)请求,浏览器页面可直接调用 Mock 服务。 - **未命中转发(Proxy 透传)**:系统设置开启后,未 Mock 的请求自动转发到真实后端(方法 / 路径 / 参数 / 请求头 / Body 原样透传,响应原样返回),实现「已 Mock 的走本地、没 Mock 的走后端」的全链路联调;转发失败返回 502。 - **快捷复制**:一键复制接口的完整地址或纯路径。 ## 📝 更新日志 查看完整更新记录:[CHANGELOG.md](CHANGELOG.md) ## 🖼 界面预览 | 主界面 | 接口测试 | | :---: | :---: | | ![主界面](Images/mockjson.png) | ![接口测试](Images/apipost.png) | ## 🚀 快速开始 ### 环境要求 - Windows 系统 - [.NET Framework 4.5](https://dotnet.microsoft.com/download/dotnet-framework/net45)(或更高版本) ### 运行 1. 克隆或下载本仓库; 2. 使用 Visual Studio 打开 `MockJson.sln`,编译并运行(或直接运行 `bin\Debug\MockJson.exe`); 3. 首次启动会自动创建本地数据库 `MockJson.db`,无需任何配置。 ### 使用步骤 1. 点击「启动服务」,默认监听 `http://localhost:8099`; 2. 在「操作」菜单(或列表右键)中**新建接口**,填写请求路径、方法、描述; 3. 为接口**添加返回值**,设置内容类型、权重、启用状态(或勾选「文件下载」指定本地文件); 4. 使用 Apipost / Postman / 浏览器访问 `http://localhost:8099/你的路径`,即可得到模拟数据。 ## 📖 使用说明 - **操作入口**:主界面菜单栏「操作」,或直接在接口列表上右键。 - **新建/编辑/删除**:右键菜单或双击接口进入编辑。 - **复制路径**:右键可复制「纯路径」(如 `/api/user`)或「全路径」(含 IP 与端口)。 - **接口分组**:编辑接口时选择「所属组」(可输入新组名自动创建);「数据 → 分组管理」可维护分组。 - **系统设置**:菜单「系统设置」中配置监听 IP、端口,以及是否自动开启服务、关闭行为、导入重复处理、CORS 跨域支持(含允许来源)、未命中转发到真实后端(含转发目标)等。 - **重放配置**:「菜单 → 重放配置」维护重放环境(名称 + 基础地址),重放时选择环境即切换目标服务器。 - **请求测试**:「操作 → 请求测试」打开内置 HTTP 客户端,可构建请求(方法 / 请求头 / 请求体)、切换环境、多 Tab 编辑、保存接口、查看发送历史。 - **响应增强**:编辑响应时可自定义状态码、延迟、响应头、动态模板变量,以及 Query / Body / Header 匹配条件。 - **请求日志**:主界面下方实时展示请求日志(含状态码 / 耗时 / 大小),双击查看详情;「导出日志」导出 CSV,「清空日志」删除记录并收缩数据库。 - **请求重放**:选中某条日志点「重放」(或右键「重放此请求」),可改目标地址 / 环境后原样重发,快速复现问题。 ## 🛠 技术栈 | 组件 | 说明 | | --- | --- | | Nancy.Hosting.Self | 轻量级 HTTP 自托管服务 | | FreeSql.Provider.Sqlite | ORM + SQLite 存储,自动建表/迁移 | | Newtonsoft.Json | JSON 序列化与校验 | | WinForms | 图形界面 | ## 📁 项目结构 ``` MockJson.sln ├── MockJson.Core/ # 核心逻辑层(类库,无 UI 依赖) │ ├── Database/ 数据实体与访问(App、Api、ApiResponse、RequestLog、Setting 等) │ ├── Module/ Nancy 路由(CoreModule)、日志通知、示例数据、导入导出、模板引擎 │ └── Service/ Mock 服务(启动 / 停止封装) ├── MockJson/ # UI 层(WinForms) │ ├── Forms/Main/ 主界面 │ ├── Forms/Api/ 接口 / 响应编辑相关 │ ├── Forms/LogForm/ 请求日志、日志导出、请求重放、请求测试(内置 HTTP 客户端)相关 │ ├── Forms/Setting/ 系统设置相关 │ └── Forms/Help/ 关于 / 操作说明 └── MockJson.Cli/ # 命令行层(无界面启动服务) ``` ## 🤝 参与贡献 欢迎参与贡献,帮助项目变得更好! 1. Fork 本仓库 2. 新建 `Feat_xxx` 分支 3. 提交代码 4. 新建 Pull Request ## 📄 开源地址 项目托管在 Gitee:[https://gitee.com/handloong/mockjson](https://gitee.com/handloong/mockjson) 欢迎 Star 和 Fork!