临时接口 Mock
将接口模拟逻辑放在独立 Mock 项目,业务项目只做指定请求的临时地址修改。支持初始化、开始 Mock、恢复三个操作;开始 Mock 时可衔接必要的初始化,单独要求初始化时不修改业务接口。
执行边界
- 用户明确要求 Mock 或恢复指定接口,即按该范围执行,不固定追加改动清单确认。仅在范围不明、关键契约缺失、存在冲突或需要扩大影响范围时询问;用户要求先看方案时,先列出接口、文件及代码位置、地址表达式映射和影响,等待确认后再修改。
- 读取目标项目适用的约定、相关代码与现有差异,保留已有改动。业务项目沿用实际启动脚本和接入方式,不启用会扩大本次 Mock 范围的启动方式。
- 只修改指定请求调用的 URL 表达式,继续使用现有请求封装,保留方法、路径参数、查询参数、请求体及请求选项。不修改公共
baseURL、共享API_PREFIX或全局配置,不新增业务端分流框架、接口清单协议或自动发现机制,不顺带清理已有 Mock 基础设施。 - 启动或重启服务时,只管理明确属于本任务的进程。端口冲突时先查明归属,不停止未知服务或擅自更换端口。
初始化
- 优先使用用户本次指定的 mock-server 本地目录,否则复用会话信息或下述个人配置。复用时核对目录存在、服务配置与 origin 一致;目录失效或信息缺失时,只询问无法确定的部分,不把 Git 仓库 URL 当成本地路径。
- 读取目标目录适用的约定。已有 Mock 项目沿用其框架、结构和配置;指定目录为空或不存在时,先读模板说明,将技能内置
assets/mock-server/骨架文件(含.gitignore)复制到目标目录。非空且用途不明的目录先确认,不覆盖原项目。新项目只使用内置模板,不复制其他项目的业务数据、handler、依赖目录或证书。 - 新项目按模板说明安装依赖、启动并检查健康接口;已有项目使用其实际命令、origin 和检查方式,不套用模板默认值。已有业务页面上下文时,按“开始 Mock”的接入检查验证;仅初始化且缺少页面上下文时,说明浏览器接入尚未验证,在开始 Mock 时补齐。
- 将验证后的项目绝对路径与实际可访问的服务 origin 保存到
${XDG_CONFIG_HOME:-$HOME/.config}/temporary-api-mock/config.json。它是个人本机配置,首次使用时才创建,不写入业务仓库或技能定义;用户明确更换 Mock 项目时更新配置。
{
"serverProjectPath": "/absolute/path/to/mock-server",
"serverOrigin": "http://127.0.0.1:1024"
}
项目路径仅为结构示例;地址展示新模板默认值,实际记录验证后的地址。
开始 Mock
- 从用户描述确定目标接口(方法+路径或具体 service 函数)。接口无法唯一定位时询问,不扩展成整个页面或整个 service 的接口。定向查看目标函数的直接引用;发现共用时记录调用方及影响,仅在影响超出用户明确要求的范围时询问是否纳入,不额外设计调用隔离机制。
- 优先使用用户本次指定的 Mock 项目与连接信息,否则复用会话信息或个人配置。缺少项目或连接信息时衔接初始化;已有项目按初始化中的复用检查核对,不重复初始化或要求用户重复填写,明确更换项目时更新连接配置。读取 Mock 项目的约定与现有差异,保留其已有改动。
- 检查现有请求封装对绝对 URL、
baseURL、路径前缀及地址重写的处理,确定修改后实际请求会到达 Mock 地址。区分原表达式中的相对路径与完整 URL,不把含域名的前缀直接拼到 Mock origin 后。默认只替换 origin,保留动态路径与查询参数;确需不同路径时记录映射。无法仅修改调用处 URL 完成接入时,说明具体阻碍并询问,不擅自修改公共请求层。 - 根据实际请求参数、响应类型、接口文档或用户示例生成处理器与数据,响应包装遵循目标项目的实际契约。用户未指定场景时,默认提供正常成功场景;名称、数量、展示文案等普通示例数据可生成合理的虚构值。影响接入的字段结构、包装或关键业务约定缺失时询问,不将猜测当成真实契约。分页、筛选、失败场景或状态变化只实现本次调试需要的部分。
- 沿用 Mock 项目结构,按业务项目和模块组织接口。基于内置模板创建的项目先读目标项目
README.md,按其中的数据、handler 和注册约定维护,并更新“当前接口”。同一方法与路径已有处理器时,从代码和说明核实归属:同一接口复用并局部更新本次需要的数据或场景,不重复注册;归属不明或与其他业务冲突时说明具体冲突、拟采用的隔离方式及 URL 映射,询问后处理,不覆盖其他业务的处理器。 - 启动或复用 Mock 服务,按其能力热更新,确认处理器实际生效。直接请求本地 Mock 地址,验证方法、路径、响应包装和关键数据;处理器不默认回源真实后端,验证不调用真实业务写接口。根据业务页面的 origin、协议和凭证设置,检查实际响应及
OPTIONS预检;携带凭证时使用明确的允许来源和凭证响应头。HTTPS 与证书按目标项目约定处理,内置模板的适配方式见其 README。服务不可用或接入检查发现问题时先修复 Mock 端,不将业务接口切向已知不可用的地址。 - 服务及接入检查通过后,直接修改目标调用的 URL 表达式,并按下文保存原表达式。同一接口再次 Mock 时,仅更新本次需要的场景或地址;已有恢复标记保留最初的原表达式,不重复添加。
原地址标记
保存修改前完整的源码表达式,保留变量和模板插值,不仅记录推算后的 URL。示例假设 API_PREFIX 是原相对路径前缀:
return postData(
// LOCAL_MOCK_ORIGINAL: `${API_PREFIX}/products`
`http://127.0.0.1:1024${API_PREFIX}/products`,
data,
options
);
示例地址仅表示内置模板默认 origin,实际使用已验证的服务 origin。原表达式为多行时,使用相邻的 /* LOCAL_MOCK_ORIGINAL: ... */ 注释原样记录。若当前地址已是临时 Mock 且没有恢复标记,先查明真实表达式;无法确定时询问,不能把 Mock 地址记成恢复目标。
恢复地址
- 按用户指定范围查找
LOCAL_MOCK_ORIGINAL。指定单个接口时只恢复该接口;明确要求恢复全部时,才处理当前业务项目内全部标记。恢复不依赖 Mock 服务运行,无需初始化或启动服务。 - 核对恢复点。原表达式依赖的变量已删除、调用结构已变化或标记归属不明确时,说明具体冲突并询问,不根据猜测覆盖代码。已恢复的接口说明无需修改;没有标记且无法确定原表达式时说明无法自动恢复,不批量替换地址。
- 无冲突时直接将对应 URL 恢复为标记中的原表达式,只删除这条标记。保留同一文件里的参数、类型、业务逻辑和其他改动。
禁止通过整文件 checkout、restore 或 reset 清理临时 Mock。Mock 项目的处理器、数据和个人连接配置默认保留;不因恢复 URL 就删除文件或停止仍可能被使用的服务。
交付与人工提交
- 修改或恢复后复核差异,按实际改动完成项目要求的必要验证。执行后列出接口的方法和路径、修改文件及代码位置、原地址与 Mock 地址的对应关系,以及发现的共用影响。
- 如实报告服务、接口直连、跨域检查和实际浏览器接入各自的验证状态;未验证的内容说明原因。健康检查或直连成功不代表浏览器接入已验证。
- 临时 Mock 保留到用户要求恢复;不因当前任务结束、切换任务或用户准备提交其他模块而自动清理。
- 暂存与提交由用户人工处理。本技能不操作暂存区或提交代码,不创建提交检查脚本、Git hook 或 CI 检查。