首页
/ Mockoon Serverless 包使用指南:在无服务器环境中运行模拟API

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模拟能力
  • 模板系统(用于动态生成响应)
  • 代理模式(可将请求转发到真实后端)
  • 路由响应规则(基于条件的动态响应)

核心优势

  1. 轻量级:专为无服务器环境优化,资源占用低
  2. 功能完整:保留了Mockoon的核心功能集
  3. 跨平台:支持主流云服务商的无服务器产品
  4. 易于集成:简单的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提供两种日志级别:

  1. 基础日志:默认记录服务器事件(启动、停止等)
  2. 事务日志:详细记录每个请求和响应(需手动启用)

启用事务日志后,日志将包含与桌面应用"Logs"选项卡相同的信息,包括请求头、响应状态等完整细节。

功能限制说明

由于无服务器环境的特性,以下Mockoon功能在Serverless包中有限制:

  1. 数据桶(Data Buckets):每次调用都会重新生成,不会持久化
  2. 基于请求计数的规则:计数器会在每次调用时重置

最佳实践建议

  1. 环境配置:为不同环境(开发、测试、生产)准备不同的Mockoon配置文件
  2. 路由管理:合理使用disabledRoutes选项控制暴露的API端点
  3. 性能优化:在Lambda等环境中注意设置适当的内存和超时限制
  4. 安全考虑:生产环境中考虑禁用Admin API或设置适当访问控制

常见问题解答

Q:如何在无服务器环境中模拟延迟响应? A:使用enableRandomLatency选项或在Mockoon配置中为各路由设置具体延迟时间。

Q:支持哪些Faker.js语言环境? A:支持包括中文(zh_CN)在内的多种语言环境,完整列表可参考Faker.js文档。

Q:事务日志会占用多少内存? A:默认保留最近的100条日志,可通过maxTransactionLogs调整。

通过Mockoon Serverless包,开发者可以在无服务器环境中快速部署完整的API模拟服务,极大简化了开发和测试流程。无论是单元测试、集成测试还是前端开发联调,这都是一个高效且灵活的解决方案。