1.0.0 • Published 2 years ago

@kamuisdo/mock-api v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

mock-api

Install

npm i @kamuisdo/mock-api --save
pnpm add @kamuisdo/mock-api

Introduce

  1. 备注字段的MOCK规则
  • 默认读取每个字段的第一条备注作为mock的规则
  • : 分隔字段规则和random内容
  • 注释中的规则优先级高于Typescript中的类型,但如果Typescript中定义的是数组,就会默认转变成数组规则
  • random的写法参照MOCKJS文档
export function login(param): Promise<{
  /** @email */
  param1: string,
  /** +1: @datetime */
  param2: string[],
  /** 1-10: [@email] */
  param3: User[],
  /** 固定值 */
  param4: string
}> {
  // ...
}

处理之后变成

router.get('/login',function (req,res,next){
  res.locals.data = {
    "param1":"@email",
    "param2|+1":"@datetime",
    "param3|1-10":["@email"],
    "param4":"固定值",
  }
  res.locals.error = false
  res.locals.businessError = false

  next()
})
  1. 没有加备注的情况按照如下规则转换
  • string --> @word
  • number --> @natural
  • boolean --> @boolean
  • any --> @word
  • Object --> "{}"
  • void --> null
  • null --> null
  • undefined --> undefined
  • never --> null
  • Tuple --> TODO
  1. 如果是可空的字段,mockJS没法mock随机的null值,所以在需要null值的情况时,需要手动修改备注为如下
export function login(param): Promise<{
  /** null */
  param1: string
}> {
  // ...
}

不支持的内容

  1. typeInterface都要定义内容,不能作为枚举使用
// 无法识别
interface Color{
    red,
    blue
}
type Color = {
  red,
  blue
}
// 需要写成
enum Color {Red, Green, Blue}
  1. 高级类型无法识别,如 Union类型
1.0.0

2 years ago