0.9.0 • Published 6 years ago

express-data-server v0.9.0

Weekly downloads
15
License
MIT
Repository
github
Last release
6 years ago

express-data-server

通过 express 服务模拟数据接口,可集成在项目代码中,将模拟数据与项目代码一并进行版本控制。接口是项目中前端代码的一个重要部分,应该被版本化记录下来,使得项目能在不使用真实接口的情况下独立运行。

安装

npm install express-data-server --save-dev

部署

// build/server.js
var express = require('express');
var dataServer = require("express-data-server"); // 引入模块

var app = express();
var options = {
      // 请求路径
      reqPath:'data',
      basePath:__dirname,
      // 存放自定义 json 文件
      dataPath:"./api"
    };
dataServer(app,options); // 启动

执行 node build/server.js 后,访问 http://127.0.0.1:3000/data/_true,返回 {success:true}

使用

内置请求地址

如果在数据目录中没有创建任何 json 文件时,也有默认的请求接口,如下:

  • /data/_query?a=1&b=2 => {a:"1",b:"2"},返回 get 请求的字段组成的响应。
  • /data/_payload 同上,post、put 等提交的数据
  • /data/_false => {success:false}
  • /data/_true => {success:true}

自定义模拟接口数据

例如:在项目根目录新建目录 api,该文件夹下新建文件 list.json,写入 json 数据。

// api/list.json
{
  "items": [{
    "id": 1,
    "name": "apple",
  }]
}

// http://127.0.0.1:3000/data/list
{
  "items": [{
    "id": 1,
    "name": "apple",
  }]
}

提示:所有接口请求均支持 REST

配置

影响所有请求接口,理论上对象的所有字段均非必填,当需要返回自定义数据时,则必填字段:basePathdataPath

字段名类型必填默认值说明
reqPathString-请求目录,例如:data,即 /data/api_1
basePathString-一般为该文件的父目录路径,例如:__dirname
dataPathString-数据存放的目录名,是 basePath 的相对路径,例如:'../api'
debugBoolean-false是否打印调试信息
bodyParserBoolean-true是否启用包 body-parser
delaynumber-0设置延迟返回的毫秒数
fileMapObject--url 与 json文件的关联映射表
pluginsArray|Object--启用的插件

fileMap 说明&举例

fileMap 没有默认值,因为默认情况是以文件名访问的。当配置如下时:

{
  "a(\\d+)b(\\d+)": "file1", // 请求 /api/a1b2 将响应 file1.json 内容
  "hello": "file2", // 请求 /api/aaa 将响应 file2.json 内容
  "baidu": "//www.baidu.com" // 将会 304 跳转
}

值的类型,支持数组:

{
  fileMap :[{
    "regStr: ".*",
    "callback": function({regExp, req, reqPath}){
      // exp => [GET]request: /api/a1b2
      let {originalUrl, method, baseUrl} = req
      console.log(originalUrl) // /api/a1b2
      console.log(baseUrl) // /api
      console.log(method) // GET
      console.log(reqPath) // a1b2

      return originalUrl
    }
  }]
}

plugins 说明&举例

类型:Array,默认值如下:

字段说明
fastMap预设的内置接口
getFile获取 JSON 文件数据
placeHolder替换数据内的占位符
acStructure补全基本结构
acList补全列表特种的数据结构
acQuery补全请求时的 query 数据
placeHolder

placeHolder 提供了三种占位符,支持拼接。其使用如下:

{
  "random":"{random}", // 100 到 200 之间的随机整数
  "times":"{times}", // 时间戳
  "id": "{id}_{index}",  // 从1开始递增的整数
}
acStructure Boolean|Object

如果想禁用某个插件,传入 false,如果需要修改默认配置,请传入对象:

{
  "plugins": {
    "acStructure":{
      "xoField":"success",
      "dataField":"results"
    }
  }
}

访问:http://127.0.0.1:3000/data/aaa 时,会去找 test1.json 文件,且 http://127.0.0.1:3000/data/test1 依旧可访问。

文件中的配置

仅仅影响该文件的请求,有部分参数是可以在 json 文件中字段 _settings 配置的,但仅对这个 json 有效,和全局配置重名的字段,会覆盖全局配置项。保留字段均放在 _settings 中。

{
  "name1": "value1",
  "name2": "value2",
  "_settings": {
    "plugins": {
      "placeHolder":false, // 关闭插件
      "acList": {
        "enable":true, // [Boolean], 默认 true,只有设置为 false 时,可关闭该插件
        "noPageBean": true, // [Boolean],默认 false,响应时不补全 pageBean 字段
        "queryFields": {
          "size": { // 每页展示数量
            "name": "pageSize", // [String],别名
            "value": 10 // [Number],默认值
          },
          "pageNo": {
            "name": "pageNo", // [String],别名
            "value": 1 // [Number],默认值
          }
        },
        "totalCount": 100, // [Number],设置总记录数,默认值100
        "fixCount":true // [Boolean],默认 true,按 pageSize 补足当前页的记录数
      }
    }
  }
}

注意:json 文件中的配置优先级 > 全局配置优先级

ChangeLog

0.9.0

  • feature 修改 placeHolder 插件,实现数据值按字段名称不同类型不同,例如 id 是数字类型。

0.8.2

  • fix 解析值为 undefined、null 出错。

0.8.1

  • feature 添加 eslint 配置。
  • fileMap 支持 数组。

0.8.0

  • feature 修改 placeHolder 插件中占位符 id,可深度匹配。

0.7.0

  • feature 新增 acStructure 插件的配置参数。

0.6.3

  • fix 将解析提交数据的限制大小改为 '99999kb' 。

0.6.2

  • fix 占位符解析错误。

0.6.1

  • fix 设定默认配置参数。

0.6.0

  • 删除参数 pluginsOptions 。
  • 支持在单个json文件内关闭插件。
  • feature 对插件 acList 新增参数 fixCount 字段。

0.5.2

  • fix 插件 acList 中,当 pageSize 大于 totalCount 时,返回 totalCount 条记录。

0.5.1

  • 变更占位符的执行方式。
  • 新增占位符 index。
  • 占位符支持拼接。

0.5.0

  • 新增延迟返回参数 delay。

0.4.0

  • 列表插件新增参数 totalCount,可限定总记录数,满足翻页超出总页数时。

0.3.2

  • fix 占位符 {id} 的值与分页数据关联。

0.3.1

  • 升级 uojo-kit 包。

0.3.0

  • 新增 当执行插件 fastMap 后,再执行 acStructure,即所有输出前都先执行 acStructure

0.2.1

  • fix checkOpsPlugins 。

0.2.0

  • 参数 plugins 支持对象方式设置。

0.1.0

  • 第一版本。
0.9.0

6 years ago

0.8.2

6 years ago

0.8.1

6 years ago

0.8.0

6 years ago

0.7.0

6 years ago

0.6.3

6 years ago

0.6.2

6 years ago

0.6.1

6 years ago

0.6.0

6 years ago

0.5.2

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.2

6 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago