Mock HTTP

作者: 细密画红 | 来源:发表于2018-02-08 15:14 被阅读18次

Mock HTTP

  • JSON Schema Faker ( faker,chance,regexp)
  • JSON Server

tutorial

  • 新建一个 mockDataSchema.js 文件,用来描述数据结构
export const schema = {
    "type": "object",
    "properties": {
        "users": {
            "type": "array",
            "minItems": 3,
            "maxItems": 5,
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "number",
                        "unique": true,
                        "minimum": 1
                    },
                    "firstName": {
                        "type": "string",
                        "faker": "name.firstName"
                    },
                    "lastName": {
                        "type": "string",
                        "faker": "name.lastName"
                    },
                    "email": {
                        "type": "string",
                        "faker": "internet.email"
                    }
                },
                "required": ["id", "firstName", "lastName", "email"]
            }
        }
    },
    "required": ["users"]
};
  • 新建一个 generateMockData.js 文件,作用是利用 json-schema-faker 根据上面定义的数据格式自动生成随机数据。

import jsf from 'json-schema-faker';
import {schema} from "./mockDataSchema";
import fs from 'fs';
import path from 'path'
import chalk from 'chalk';

const json=JSON.stringify(jsf(schema));

let targetFilePath=path.resolve(__dirname)+"/api/db.json";

fs.writeFile(targetFilePath,json,function (err) {
    if(err){
        return console.log(chalk.red(err));
    }else{
        console.log(chalk.green("Mock data generated."));
    }
});

console.log("this is generateMockData file");

console.log(targetFilePath);
  • 在项目的 package.json 文件中新增运行脚本,生成随机数据,写入文件
"scripts" : {
    ...
    "generate-mock-data": "babel-node src/mockHttp/generateMockData.js"
}

运行 npm run generate-mock-data 之后,可以看到相应的路径中已经生成db.json 文件。

  • 现在我们已经有了基本的数据,接下来我们需要利用 json-server 启动一个服务来使用这些数据 , Json-server 会根据我们随机数据结构里的每一个顶级的对象生成一个接口服务。我们在 package.json 文件中新增运行脚本:
"scripts" : {
    ...
    "generate-mock-data": "babel-node src/mockHttp/generateMockData.js",
    "start-mockapi": "json-server --watch src/mockHttp/api/db.json --port 3001"
}

执行命令之后,我们可以看到在 http://localhost:3001 的地址上已经可以访问系列的服务了。

  • 每次开启服务生成随机数据。在 package.json 文件中添加一个prestart-mockapi 命令。
"scripts" : {
    ...
    "generate-mock-data": "babel-node src/mockHttp/generateMockData.js",
    "prestart-mockapi": "npm run generate-mock-data",
    "start-mockapi": "json-server --watch src/mockHttp/api/db.json --port 3001"
}
  • 关于Json-server,有意思的是,如果我们想编辑或者删除数据,实际上会去操作对应的数据文件。

相关文章

网友评论

      本文标题:Mock HTTP

      本文链接:https://www.haomeiwen.com/subject/wusttftx.html