部署自己的MOCK(二)

简介: 本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。

四、easy-mock语法


   我们除了一些简单的api接口数据获取,我们还可以输出一些定制化的数据。我们得熟悉它的使用,以及它的语法。


语法规范

Mock.js 的语法规范包括两部分:
1、数据模板定义规范(Data Template Definition,DTD)
2、数据占位符定义规范(Data Placeholder Definition,DPD)


数据模板定义规范 DTD

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:


// 属性名   name
// 生成规则 rule
// 属性值   value
'name|rule': value


注意:属性名 和 生成规则 之间用竖线 | 分隔。生成规则 是可选的。生成规则 有 7 种格式:

'name|min-max': value
'name|count': value
'name|min-max.dmin-dmax': value
'name|min-max.dcount': value
'name|count.dmin-dmax': value
'name|count.dcount': value
'name|+step': value


生成规则 的 含义 需要依赖 属性值的类型 才能确定。

属性值 中可以含有 @占位符。

属性值 还指定了最终值的初始值和类型。

生成规则和示例:


1. 属性值是字符串 String

'name|min-max': string


通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max


'name|count': string


通过重复 string 生成一个字符串,重复次数等于 count


2. 属性值是数字 Number

'name|+1': number


属性值自动加 1,初始值为 number


'name|min-max': number


生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型。


'name|min-max.dmin-dmax': number


生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmindmax 位。


Mock.mock({
    'number1|1-100.1-10': 1,
    'number2|123.1-10': 1,
    'number3|123.3': 1,
    'number4|123.10': 1.123
})
// =>
{
    "number1": 12.92,
    "number2": 123.51,
    "number3": 123.777,
    "number4": 123.1231091814
}


3. 属性值是布尔型 Boolean

'name|1': boolean


随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率同样是 1/2。


'name|min-max': value


随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)


4. 属性值是对象 Object

'name|count': object


从属性值 object 中随机选取 count 个属性。


'name|min-max': object


从属性值 object 中随机选取 minmax 个属性。


5. 属性值是数组 Array

'name|1': array


从属性值 array 中随机选取 1 个元素,作为最终值。


'name|+1': array


从属性值 array 中顺序选取 1 个元素,作为最终值。


'name|min-max': array


通过重复属性值 array 生成一个新数组,重复次数大于等于 min,小于等于 max


'name|count': array


通过重复属性值 array 生成一个新数组,重复次数为 count


6. 属性值是函数 Function

'name': function


执行函数 function,取其返回值作为最终的属性值,函数的上下文为属性 'name' 所在的对象。


7. 属性值是正则表达式 RegExp

'name': regexp


根据正则表达式 regexp 反向生成可以匹配它的字符串。用于生成自定义格式的字符串。


Mock.mock({
    'regexp1': /[a-z][A-Z][0-9]/,
    'regexp2': /\w\W\s\S\d\D/,
    'regexp3': /\d{5,10}/
})
// =>
{
    "regexp1": "pJ7",
    "regexp2": "F)\fp1G",
    "regexp3": "561659409"
}


数据占位符定义规范 DPD

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。


占位符 的格式为:


@占位符 @占位符(参数 [, 参数]) 注意:


用 @ 来标识其后的字符串是 占位符。占位符 引用的是 Mock.Random 中的方法。通过 Mock.Random.extend() 来扩展自定义占位符。占位符 也可以引用 数据模板 中的属性。占位符 会优先引用 数据模板 中的属性。占位符 支持 相对路径 和 绝对路径。


Mock.mock({
    name: {
        first: '@FIRST',
        middle: '@FIRST',
        last: '@LAST',
        full: '@first @middle @last'
    }
})
// =>
{
    "name": {
        "first": "Charles",
        "middle": "Brenda",
        "last": "Lopez",
        "full": "Charles Brenda Lopez"
    }
}


一些规则 【少量数据不能够兼容】

{
"cname": "@cname",//中文人名
"id": "@id",//生成20 位数字
"title": "@ctitle",//中文title
"city": "@city",//中文城市
"ip": "@ip",//ip 地址
"email": "@email",//email
"url": "@url",//url
"cfirst": "@cfirst",//姓名,姓
"clast": "@clast",//姓名,名
"cword": "@cword('123456')",//123456 从中选取一个字符
"csentence": "@csentence(1,5)",//文字文段
"csentence5": "@csentence(5)",//文字文段
"cparagraph": "@cparagraph(1,3)",//文字文段
"string": "@string(11)",//输出11 个字符长度的字符串
"float": "@float(0,10)",//0 到 10 的浮点数
"int": "@integer(60,70)",//60 到 70 之间的整数
"boolean": "@boolean",//boolean 类型 true,false
"array|1-3": [{
"id": "@integer(1,10)",//整数 1到10 取整数
"name": "cname"
}],//数组(随机 1 到3个)
"array_sort_add|+1": ["1", "2", "3"],//数组1,2,3轮询输出
"boolean|1-2": true,//boolean 类型 true,false
"actionType|1": ['click_url', 'open_resource_detail', 'open_resource_search'],
"payload": function() {
      var returnClickUrl = {
        "linkUrl": "http://tob.zhisland.com/apph5"
      };
      var returnResourceDetail = {
        "resourceId": "606"
      };
      var returnResourceSearch = {
        "keyWords": "",
        "tagCategory": "1",
        "tag": "1"
      };
      var s = this.actionType == 'click_url' ? returnClickUrl : this.actionType == 'open_resource_detail' ? returnResourceDetail : returnResourceSearch;
      return s;
 }//function 返回设置返回的数据
}


五、总结


   这里我们列举了业界一些Mock应用,我们可以根据需要选择一款应用进行使用。广东靓仔推荐easy-mock,用了好久,感觉不错。

相关文章
|
10月前
|
NoSQL 前端开发 MongoDB
Mock神器:Easy-Mock 私有化部署及使用介绍
Easy-Mock 是一个非常实用的模拟数据工具,尤其在前后端分离开发的场景中,可以极大地提高前端开发效率。通过将 Easy-Mock 部署为私有化服务,你可以完全掌控模拟数据的生成和管理,同时保障数据的安全性和隐私性。
588 44
|
7月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
6261 24
|
SQL 自然语言处理 关系型数据库
PolarDB自然语言到SQL语言转义
PolarDB自然语言到SQL语言转义
|
JSON Cloud Native Java
通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能
通过 Higress Wasm 插件 3 倍性能实现 Spring-cloud-gateway 功能
482 88
费德勒权变模型(Fiedler Contingency Model)详解与Python代码示例
费德勒权变模型(Fiedler Contingency Model)详解与Python代码示例
|
自然语言处理 数据可视化 Python
卡方分布和 Zipf 分布模拟及 Seaborn 可视化教程
卡方分布是统计学中的一种连续概率分布,用于假设检验,形状由自由度(df)决定。自由度越大,分布越平缓。NumPy的`random.chisquare()`可生成卡方分布随机数。Seaborn能可视化卡方分布。练习包括模拟不同自由度的卡方分布、进行卡方检验。瑞利分布描述信号处理中幅度分布,参数为尺度(scale)。Zipf分布常用于自然语言等幂律特征数据,参数a控制形状。NumPy的`random.zipf()`生成Zipf分布随机数。
400 0
|
NoSQL Linux MongoDB
Centos7安装MongoDB
Centos7安装MongoDB
1651 0
|
人工智能 JavaScript 开发工具
【完全免费】VS Code 最好用的 12 款 AI 代码提示插件!!!
🎉 探索12款免费VSCode AI代码提示插件:Codeium、Codegeex、CodeFuse、TONGYI Lingma、Comate、iFlyCode、Fitten Code、Bito AI、Mintlify Doc Writer、Kodezi AI、aiXcoder、IntelliCode。这些插件提供智能补全、代码生成、注释、优化,支持多种语言,提升编程效率!🚀👩‍💻👨‍💻
16967 0
java.lang.ExceptionInInitializerError异常原因及解决方法总结
java.lang.ExceptionInInitializerError异常原因及解决方法总结
5071 0