emock-service
emock-service提供模拟REST API服务,仅通过一些简单逻辑,就可以实现一个比较『完整、真实』的后端。在前后端分离开发的项目中,帮助前端人员快速开发。
特点
- 调试数据
- 根据资源的json schema描述随机生成调试需要的数据;
- 开发人员手工构造json数据;
- 使用json文件存储数据,模拟增删改查;
- 自动生成资源的restful api;
- 自定义路由,通过简单的代码处理请求;
安装
npm install emock-service
使用
- 撰写json schema或者构造json数据;
- 自定义路由(可跳过);
- 启动server。
示例
构造json数据
项目下新建db.json
文件,增加以下内容:
启动server
; let options = source: 'db.json' host: '127.0.0.1' port: 3000;;
emock-service自动生成以下服务:
-
GET /users
支持任意字段排序、分页、全字段搜索
- order:
desc
、asc
- orderBy: 字段名
- page: 页码
- pageSize: 每页显示条数
- keyword: 搜索关键字
- order:
-
GET /users/:id
-
POST /users
-
PUT /users/:id
-
DELETE /users/:id
浏览器地址栏输入http://127.0.0.1:3000/users
,可看到如下结果:
利用json schema自动生成数据
emock-service可根据实体的json schema定义自动生成测试数据,目前json schema需满足以下要求:
- 所有资源的json schema文件放在同一目录
- 文件扩展名必须为
.json
- 使用
id
标识资源名称(待改进,json schema规范中id为当前json schema的资源标识符) - 为了生成看起来合法的数据,需要利用json schema关键字尽可能全面描述资源
json schema扩展字段
faker, chance
mock-service使用json-schema-faker生成实体数据,因此,需要在json schema的字段定义中引入faker, chance,调用fakerjs/chancejs
对应的方法随机生成数据。
json schema示例
Notes: json schema中无需定义id
,emock-service会生成唯一的id。
修改server启动配置:
; let options = source: 'db.json' host: '127.0.0.1' port: 3000 // 自动生成数据使用的json schema所在路径 schemaDir: 'path/to/schemas' // 为每个资源自动生成的数据条数,默认值10 count: 20;;
参考文档
资源依赖关系处理
资源之间一般存在关联关系,json schema不能描述资源之间的这种关系,缺少关联关系可能导致自动生成的数据不可用。因此emock-service了一种描述简单关联关系的方法,具体参见示例:
user: companyId: resource: 'company' field: 'id' companyIds: resource: 'company' field: 'id' ;
上述对象表达的关联关系为:
- 一个user的companyId字段关联一个company的id字段;
- 一个user的companyIds字段关联多个company的id字段
建立关联关系的要求
- 关联其他资源的资源,必须提供schema定义
- 非必需字段,不作关联
关联关系的使用
;; let options = source: 'db.json' host: '127.0.0.1' port: 3000 // 自动生成数据使用的json schema所在路径 schemaDir: 'path/to/schemas' // 为每个资源自动生成的数据条数,默认值10 count: 20 relations: relations;;
自定义路由
自定义route中可以使用lowdb实例,个性化处理请求。
; let options = source: 'db.json' host: '127.0.0.1' port: 3000 // 自动生成数据使用的json schema所在路径 schemaDir: 'path/to/schemas' // 为每个资源自动生成的数据条数,默认值10 count: 20 routes: url: '/api/js/users/verify' method: 'GET' { } ;;
其中req、res为express中的request/response实例,如何使用可参考express文档;
db为lowdb实例,lowdb实例上有lodash API,可以借助lodash api便利的操作集合,lowdb文档。
定制通用的增删改查逻辑
; let options = source: 'db.json' host: '127.0.0.1' port: 3000 // 自动生成数据使用的json schema所在路径 schemaDir: 'path/to/schemas' // 为每个资源自动生成的数据条数,默认值10 count: 20 pluralOverrides: {} {} {} {} {} ;;
参数说明:
- db: 数据库实例
- name: 资源名称,复数
- request/response/next: express中相应对象
其他配置
constant:常量数据文件路径
有些常量数据,无法或者不需要使用json schema生成,可将其放在一个json文件中,emock-server启动时,从该文件中读取数据,copy到数据库。
urlPrefix
为所有自动生成的api增加urlPrefix
前缀。
License
MIT