Skip to content

中间件

js-lite-rest 提供了强大的中间件系统,允许你在请求前后执行自定义逻辑,实现日志记录、数据验证、权限控制、缓存等功能。

基本概念

中间件是一个异步函数,接收请求参数、下一个中间件函数和配置选项,可以在请求执行前后进行处理。

中间件签名

javascript
async function middleware(args, next, opt) {
  // args: [method, path, data, query] - 请求参数
  // next: () => Promise<any> - 调用下一个中间件或核心逻辑
  // opt: StoreOptions - Store 配置选项
  
  // 前置处理
  console.log('请求开始');
  
  // 调用下一个中间件
  const result = await next();
  
  // 后置处理
  console.log('请求完成');
  
  return result;
}

添加中间件

使用 use() 方法

javascript
const store = await JsLiteRest.create();

// 添加日志中间件
store.use(async (args, next) => {
  const [method, path] = args;
  console.log(`${method.toUpperCase()} ${path}`);
  return next();
});

// 添加多个中间件
store.use(middleware1);
store.use(middleware2);
store.use(middleware3);

中间件执行顺序

中间件按照添加顺序执行,形成洋葱模型:

javascript
store.use(async (args, next) => {
  console.log('中间件 1 - 前置');
  const result = await next();
  console.log('中间件 1 - 后置');
  return result;
});

store.use(async (args, next) => {
  console.log('中间件 2 - 前置');
  const result = await next();
  console.log('中间件 2 - 后置');
  return result;
});

// 执行 store.get('users') 时的输出:
// 中间件 1 - 前置
// 中间件 2 - 前置
// [核心逻辑执行]
// 中间件 2 - 后置
// 中间件 1 - 后置

Released under the MIT License.