wormaworma

参数修改器

灵活修改 API 接口的请求和响应参数,支持增加、删除、修改参数类型

参数修改器

本插件用于灵活修改 API 接口的请求和响应参数,支持增加、删除和修改参数类型。

主要功能

  • 支持修改 paramspathParamsdataresponse 四个维度的参数
  • 支持增加、删除、修改参数类型
  • 支持修改参数层级(flat
  • 通过 match 规则精确控制需要修改的字段
  • 通过 handler 函数动态修改参数的类型和必填性

基本使用

import { defineConfig } from 'wormajs';
import { payloadModifier } from 'wormajs/plugin';

export default defineConfig({
  generator: [
    {
      // ...
      plugins: [
        // 修改请求参数中的 userId 字段
        payloadModifier([
          {
            scope: 'params',
            match: key => key === 'userId',
            handler: schema => {
              return {
                'attr1?': 'string', // 生成为可选参数
                attr2: 'number', // 生成为必填参数
                attr3: {
                  // 嵌套数据
                  innerAttr: ['string', 'number', 'boolean'],
                },
              };
            },
          },
        ]),
      ],
    },
  ],
});

配置参数

ModifierScope(修改范围)

type ModifierScope = 'params' | 'pathParams' | 'data' | 'response';

Schema(数据模式定义)

定义参数类型的核心类型,支持多种模式:

  • 基本类型'number' | 'string' | 'boolean' | 'undefined' | 'null' | 'unknown' | 'any' | 'never'
  • 数组类型{ type: 'array'; items: Schema }
  • 引用类型(对象){ [attr: string]: Schema }(key 末尾加 ? 表示可选参数)
  • 联合类型Array<SchemaPrimitive | SchemaReference | SchemaArray>
  • 组合类型{ oneOf: Schema[] } | { anyOf: Schema[] } | { allOf: Schema[] }

Config(插件配置接口)

interface Config<T extends Schema> {
  /** 生效范围 */
  scope: ModifierScope;
  /** 匹配规则 */
  match?: string | RegExp | ((key: string) => boolean);
  /**
   * 处理器
   * - 返回 Schema 表示修改类型
   * - 返回 { required: boolean; value: Schema } 表示修改必填性
   * - 返回 void | null | undefined 表示移除字段
   */
  handler: (
    schema: T,
  ) => Schema | { required: boolean; value: Schema } | void | null | undefined;
}

示例

修改参数类型

params 中的 age 字段修改为 number 类型:

payloadModifier([
  {
    scope: 'params',
    match: 'age',
    handler: () => 'number',
  },
]);

修改嵌套参数

修改 data 中的 user 对象及其嵌套结构:

payloadModifier([
  {
    scope: 'data',
    match: 'user',
    handler: () => ({
      name: 'string',
      age: 'number',
      address: {
        city: 'string',
        zipCode: 'number',
      },
    }),
  },
]);

移除参数

移除 response 中的 debugInfo 字段:

payloadModifier([
  {
    scope: 'response',
    match: 'debugInfo',
    handler: () => undefined,
  },
]);

联合类型

pathParams 中的 id 字段修改为 string | number 类型:

payloadModifier([
  {
    scope: 'pathParams',
    match: 'id',
    handler: () => ['string', 'number'],
  },
]);

高级用法

动态修改必填性

通过返回 { required: true/false, value: schema } 对象来控制:

payloadModifier([
  {
    scope: 'data',
    match: 'email',
    handler: () => ({ required: true, value: 'string' }),
  },
]);

可选参数与必填参数

在 Schema 对象的 key 末尾添加 ? 表示可选,否则为必填:

handler: () => ({
  username: 'string', // 必填
  'age?': 'number',   // 可选
});

使用正则匹配

匹配所有以 _date 结尾的 params 参数:

payloadModifier([
  {
    scope: 'params',
    match: /_date$/,
    handler: () => 'string',
  },
]);

支持 oneOf、anyOf、allOf

oneOf 数组快捷写法:

handler: () => [
  { type: 'string', cardNumber: 'string' },
  { type: 'number', email: 'string' },
];

oneOf 关键字写法:

handler: () => ({
  oneOf: [
    { type: 'string', cardNumber: 'string' },
    { type: 'number', email: 'string' },
  ],
});
  • anyOf:定义可选参数组合
  • allOf:定义参数组合(必须同时满足)

On this page