Mockoon Serverless 包使用指南:在无服务器环境中运行模拟API
2025-07-07 04:02:03作者:平淮齐Percy
什么是Mockoon Serverless包
Mockoon Serverless包是为无服务器环境(如AWS Lambda、GCP Functions、Firebase Functions等)提供的一个轻量级解决方案,它允许开发者在云函数中轻松运行Mockoon的模拟API服务。这个包继承了Mockoon桌面应用和CLI工具的核心功能,包括:
- 完整的API模拟能力
- 模板系统(用于动态生成响应)
- 代理模式(可将请求转发到真实后端)
- 路由响应规则(基于条件的动态响应)
核心优势
- 轻量级:专为无服务器环境优化,资源占用低
- 功能完整:保留了Mockoon的核心功能集
- 跨平台:支持主流云服务商的无服务器产品
- 易于集成:简单的API接口,快速上手
安装与基础使用
安装步骤
npm install @mockoon/serverless
基本配置
使用Mockoon Serverless需要准备一个Mockoon环境配置文件(JSON格式),这个文件通常由Mockoon桌面应用生成。
const mockoon = require('@mockoon/serverless');
const mockEnv = require('./datafile.json'); // 加载Mockoon配置文件
const app = new mockoon.MockoonServerless(mockEnv);
exports.handler = app;
各平台适配指南
AWS Lambda集成
const mockoon = require('@mockoon/serverless');
const mockEnv = require('./datafile.json');
const mockoonServerless = new mockoon.MockoonServerless(mockEnv);
module.exports.handler = mockoonServerless.awsHandler();
Firebase/GCP Functions集成
const { onRequest } = require('firebase-functions/v2/https');
const mockoon = require('@mockoon/serverless');
const mockEnv = require('./datafile.json');
const app = new mockoon.MockoonServerless(mockEnv).firebaseApp();
exports.app = onRequest(app);
Netlify Functions集成
const mockoon = require('@mockoon/serverless');
const mockEnv = require('./datafile.json');
const mockoonServerless = new mockoon.MockoonServerless(mockEnv);
exports.handler = mockoonServerless.netlifyHandler();
高级配置选项
MockoonServerless构造函数接受一个可选的配置对象,支持以下参数:
选项名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
logTransaction | boolean | false | 是否记录完整的事务日志(请求/响应) |
disabledRoutes | string[] | [] | 禁用特定路由(支持UUID或路径关键词) |
fakerOptions.locale | string | 'en' | 设置Faker.js的本地化语言 |
fakerOptions.seed | number | undefined | 设置Faker.js的随机种子,用于生成可预测的测试数据 |
envVarsPrefix | string | 'MOCKOON_' | 环境变量前缀 |
enableAdminApi | boolean | true | 是否启用管理API(默认启用) |
disableTls | boolean | false | 是否禁用TLS |
maxTransactionLogs | number | 100 | 内存中保留的最大事务日志数量 |
enableRandomLatency | boolean | false | 是否启用随机延迟(模拟网络延迟) |
配置示例:
const mockoonServerless = new mockoon.MockoonServerless(mockEnv, {
logTransaction: true,
disabledRoutes: ['users', '0999df54-7d57-407e-9325-c18d97fea729'],
fakerOptions: {
locale: 'zh_CN',
seed: 1234
},
envVarsPrefix: 'CUSTOM_',
enableAdminApi: false
});
日志与监控
Mockoon Serverless提供两种日志级别:
- 基础日志:默认记录服务器事件(启动、停止等)
- 事务日志:详细记录每个请求和响应(需手动启用)
启用事务日志后,日志将包含与桌面应用"Logs"选项卡相同的信息,包括请求头、响应状态等完整细节。
功能限制说明
由于无服务器环境的特性,以下Mockoon功能在Serverless包中有限制:
- 数据桶(Data Buckets):每次调用都会重新生成,不会持久化
- 基于请求计数的规则:计数器会在每次调用时重置
最佳实践建议
- 环境配置:为不同环境(开发、测试、生产)准备不同的Mockoon配置文件
- 路由管理:合理使用disabledRoutes选项控制暴露的API端点
- 性能优化:在Lambda等环境中注意设置适当的内存和超时限制
- 安全考虑:生产环境中考虑禁用Admin API或设置适当访问控制
常见问题解答
Q:如何在无服务器环境中模拟延迟响应? A:使用enableRandomLatency选项或在Mockoon配置中为各路由设置具体延迟时间。
Q:支持哪些Faker.js语言环境? A:支持包括中文(zh_CN)在内的多种语言环境,完整列表可参考Faker.js文档。
Q:事务日志会占用多少内存? A:默认保留最近的100条日志,可通过maxTransactionLogs调整。
通过Mockoon Serverless包,开发者可以在无服务器环境中快速部署完整的API模拟服务,极大简化了开发和测试流程。无论是单元测试、集成测试还是前端开发联调,这都是一个高效且灵活的解决方案。