喜大皆奔,在线Mock虚拟数据接口系统VirAPI开源版发布啦!!!

VirAPI -- 非侵入式虚拟数据在线请求响应生成接口,支持MockJs语法,请求即可得自定义规则的响应数据。

本着让广大开发者能分享VirAPI的成果,也为了VirAPI能更好的服务大家,现做出重大决定——将VirAPI开源!!!

此次开源,将发布在Githu以及Gitee两大开源仓库网站上。开源的内容主要包括:

  • 创建及管理项目应用
  • 创建及管理虚拟接口
  • 在线测试虚拟接口
  • 查看虚拟接口请求日志
  • 查看虚拟接口请求相关数据统计
  • 登录及编辑个人资料

现在您可以根据自己的需要拉取开源代码进行本地部署,若有相关开发能力还可在上面进行升级再改造。

VirAPI在Github开源

本开源项目主要分前端代码仓库以及后端代码仓库;仓库维护上将以Github为主,这也就意味着在Github上更新的更及时。

Github上对应的仓库地址为:

Gitee上对应的仓库地址为:

1. VirAPI开源版 https://github.com/bluvenr/open_virapi

1.1 环境依赖

  • NodeJs(NPM)
  • MongoDB

本项目使用了eggjs作为后端逻辑项目框架。

1.2 运行&部署

搭建好必要环境后,执行npm install安装项目所需依赖包。

本地测试运行,则请执行:npm dev

正式环境运行,请执行:npm start;此时若想关闭停止项目,则执行:npm stop。由于eggjs框架的机制,请每次修改后端代码后重启该项目npm restart

默认服务端口为7001,本地可直接访问http://127.0.0.1:7001/进入控制台管理页面。若是部署到线上,可配置nginx或apache进行重定向。

1.3 项目配置相关介绍

项目配置文件放在config/config.default.js文件中,若是放置服务器正式环境,则建议复制该文件您需要自定义的配置在同目录下命名为config.local.js文件中,并设置您要的配置参数。

默认config.default.js文件内容为:

/* eslint valid-jsdoc: "off" */

'use strict';

const fs = require('fs');
const path = require('path');

/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
  /**
   * built-in config
   * @type {Egg.EggAppConfig}
   **/
  const config = {
    mongoose: {
      // url: 'mongodb://127.0.0.1:27017/open_virapi_db',
      options: {
        // useMongoClient: true,
        autoReconnect: true,
        reconnectTries: Number.MAX_VALUE,
        bufferMaxEntries: 0,
      },
    },
    bcrypt: {
      saltRounds: 10,
    },
    security: {
      csrf: {
        enable: false,
        ignoreJSON: true,
      },
      domainWhiteList: [
        'http://localhost:8080',
      ],
    },
    validate: {
      convert: true,
    },
    cors: {
      // origin: '*',
      allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS',
    },
    jwt: {
      secret: 'virapi-202008192239',
    },
    proxy: true, // 通过ips获取nginx代理层真实IP
    session: {
      key: 'Vir_SESSION', // 承载 Session 的 Cookie 键值对名字
      maxAge: 2 * 3600 * 1000, // Session 的最大有效时间
      httpOnly: true,
      encrypt: true,
      renew: true, // 每次访问页面都会给session会话延长时间
    },
    static: {
      prefix: '/',
      dir: path.join(appInfo.baseDir, 'app/public'),
      dynamic: true,
      preload: false,
      maxAge: 0,
      buffer: false,
    },
  };

  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_hNW87vqPkMiMpLBHEtolB3Yg6vQsk5Ip4AJzCih2QCXbZBmjh5I033ELjdwB';

  // add your middleware config here
  config.middleware = [
    'errorHandler',
  ];

  config.siteFile = {
    '/favicon.ico': fs.readFileSync(appInfo.baseDir + '/app/public/favicon.ico'),
  };

  // add your user config here
  const userConfig = {
    // myAppName: 'egg',
    imgUri: '/images',
    imgDir: appInfo.baseDir + '/app/public/images',
  };

  return {
    ...config,
    ...userConfig,
  };
};

在您的自定义配置参数文件config.local.js中,我们建议您配置以下必要参数:

'use strict';

// cookie & session 数据加密安全字符串
exports.keys = 'xxxxxxxxx';   // 建议您自定义重置该参数,cookie、session等数据加密时会用到该参数

// MongoDB 相关参数
exports.mongoose = {
  client: {
    url: 'mongodb://127.0.0.1:27017/local_virapi_db',   // 您的mongo数据库访问地址
    options: {
      // useMongoClient: true,
      autoReconnect: true,
      reconnectTries: Number.MAX_VALUE,
      bufferMaxEntries: 0,
    },
  },
};

// 图片资源访问域名
exports.imgUri = 'http://{您的图片访问地址}';    // 若您要对图片资源独立分配域名可设置该参数
Mongo数据库
为了能登录控制台系统,需要一个初始化的账号信息。在您的mongo所在服务器执行以下命令,创建初始账号:

// 进入Mongo命令台
mongo 127.0.0.1:27017/local_virapi_db;  // 请更换您的Mongo访问地址

// 切换到目标数据库
use local_virapi_db;  // 请更换您的Mongo数据名

// 插入初始账号信息
db.getCollection('user').insertOne({
    "nickname" : "admin",
    "vir_uid" : "vir_admin",
    "vir_uid_updated" : null,
    "email" : "admin@virapi.com",
    "password" : "$2a$10$6fam2XUhNqU0nTNixjuoBuCx5aK2R8t.vEndOuVQ6vxVrinWXu9wy",
    "avatar" : "/default_avatar.jpg",
    "apps_count" : 0,
    "login_date" : ISODate("2020-08-21T12:35:47.312Z"),
    "status" : 1,
    "created" : ISODate("2020-08-19T15:20:43.192Z"),
    "updated" : ISODate("2020-08-21T12:35:47.315Z"),
    "__v" : 0
});

其中登录账号即为:admin@virapi.com,默认登录密码为:123456

登录成功后,请注意重置登录密码,以保障账号安全。

2. VirAPI开源版--前端代码仓库 https://github.com/bluvenr/open_virapi_front_end

2.1 运行&打包

当前前端框架主要使用的是VueJS进行开发。若需要本地运行,请先安装NPM环境。

下载后,请npm install安装前端项目所需依赖包。

本地测试运行,则请执行:npm serve

打包正式环境,请执行:npm build,且打包后的代码生成在dist目录下,若需要替换后端代码,请将该目录所有文件替换到您的后端代码项目下的/app/public/console/目录下。

2.2 .env文件相关

默认.env文件内容为:

# 环境配置
VUE_APP_REQUEST_URL=/ajax

# 网站版本编号
VUE_APP_VERSION=0.0.1

# 虚拟API接口请求URI
VUE_APP_API_REQUEST_URI=/api/

其中,VUE_APP_REQUEST_URL变量即为对应后端服务接口的地址,默认/ajax,即表示为当前域名下的ajax地址。您可以根据实际情况进行调整。

VUE_APP_API_REQUEST_URI为当前项目所生成的虚拟数据接口的地址域名,默认/api/表示所创建的虚拟数据接口的请求域名为当前域名的api路径下。您可以根据实际情况进行调整。

建议若是本地测试,可复制.env文件并重命名为.env.development.local,这样当执行npm serve,即进行本地测试运行时,会读取该文件的配置信息。

若是要打包到真实环境,则可复制.env文件并重命名为.env.production.local,这样当执行npm build,即进行打包时,会读取该文件的配置信息。


本开源项目将会持续进行维护与更新,若您有好的想法或发现有什么bug,欢迎提交交流。再次感谢您的关注与支持!

阅读 229

推荐阅读