先後端分離 接口管理神器——Rap本地搭建

 我這裏要用作mockserver的就是rap了,rap結合了團隊管理,項目管理,文檔編寫、Mock.js、可視化、接口過渡、文檔歷史版本(贊)、mock插件(線上線下切換就只須要註釋一句代碼就OK),支持本地部署。html

因爲官網講解的太模糊了 ,並且圖也不配一個 讓人以爲好寒蟬啊!git

展現地址:http://rap.taobao.org/org/index.do 感受若是擔憂數據接口安全問題,那麼就須要走下一步了,搭建屬於本身團隊的服務器!github

參考搭建地址1:http://blog.csdn.net/xinxin19881112/article/details/52279778 (這個講解的比較全了 雖然有幾處是不完善的,待我給他補上)ajax

參考搭建地址2:http://www.cnblogs.com/dothin/p/5361883.html (這個講解的比較全了 雖然有幾處是不完善的,待我給他補上)redis

感受是否是天下文章一大抄的感受,不過也不影響咱們的進程。sql

我把用到的安裝包統一放到百度雲盤中,文件名稱:rap搭建所須要的工具包數據庫

接下來該我補充上面文章中所欠缺說明的東西!express

我先秀一下本身的本地成果先:json

這是須要本地啓動的三個服務;緩存

 

本地訪問的界面效果

本身小測試了一下下

如下說明所有補充的是:參考搭建地址1

1。當連接好本地數據庫後須要執行一段腳本,建立本地的數據庫!

CREATE DATABASE IF NOT EXISTS rap_db
  DEFAULT CHARSET utf8
  COLLATE utf8_general_ci;

USE rap_db;


/**************************************************
 *                                                *
 *          account module                        *
 *                                                *
 **************************************************/


/**
 * user table
 */
CREATE TABLE tb_user
(
  id                      INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  account                 VARCHAR(32)            NOT NULL
  COMMENT '帳戶名 account name',
  password                VARCHAR(128)           NOT NULL
  COMMENT '密碼 password',
  name                    VARCHAR(256)           NOT NULL
  COMMENT '名字/暱稱 name/nickname',
  email                   VARCHAR(256)           NOT NULL
  COMMENT 'email',
  create_date             TIMESTAMP              NOT NULL
  COMMENT '建立日期 create date'
    DEFAULT now(),
  is_locked_out           INT(1)                 NOT NULL
  COMMENT '用戶是否鎖定 is the user locked out'
    DEFAULT 0,
  is_hint_enabled         INT(1)                 NOT NULL
  COMMENT '是否開啓新手引導 is user hint enabled'
    DEFAULT 1,
  last_login_date         DATETIME               NOT NULL
  COMMENT '最近登陸 last login date',
  incorrect_login_attempt INT(10)                NOT NULL
  COMMENT '錯誤登陸次數,登陸成功後會重置爲0 count of incorrect login attempts, will be set to 0 after any succesful login'
    DEFAULT 0,
  realname                VARCHAR(128)           NOT NULL
  COMMENT '真實姓名'
    DEFAULT '',
  emp_id                  VARCHAR(45)            NULL
  COMMENT '工號,可選',
  mock_num                INT(10)                NOT NULL
  COMMENT 'mock次數,用於記錄該用戶所建立的接口被調用的mock次數。 mock num, used for record mock API invokation count'
    DEFAULT 0
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * role table
 * roles instruction:
 *     user  - every registered shuold have this role
 *       rd  - research and development engineering
 *       qa  - quality engineering
 *       pm  - project manager
 *       op  - operation manager
 *    admin  - administrator
 *      god  - super admin
 */
CREATE TABLE tb_role
(
  id   INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name VARCHAR(16)            NOT NULL
  COMMENT '角色名稱 role name'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * user role table
 */
CREATE TABLE tb_role_and_user
(
  user_id INT(10) NOT NULL,
  role_id INT(10) NOT NULL,

  PRIMARY KEY (user_id, role_id),
  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (role_id) REFERENCES tb_role (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;


/**************************************************
 *                                                *
 *          project module                        *
 *                                                *
 **************************************************/



/**
 * parameter table
 */
CREATE TABLE tb_parameter
(
  id         INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name       VARCHAR(256)           NULL
  COMMENT '參數含義 parameter name',
  identifier VARCHAR(256)           NULL
  COMMENT '變量名/參數標識符 parameter identifier',
  data_type  VARCHAR(32)            NULL
  COMMENT '數據類型 data type',
  remark     TEXT                   NULL
  COMMENT '備註/mock數據等 remark/mock data',
  expression VARCHAR(128)           NULL
  COMMENT '備用字段:表達式 backup column:expression',
  mock_data  TEXT                   NULL
  COMMENT '備用字段:mock數據 backup column:mock data'
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * project table
 * workspace_mode 1-vss(default) 2-svn
 * stage 1-design 2-developing 3-debug
 */
CREATE TABLE tb_project
(
  id             INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  `version`      VARCHAR(128)           NOT NULL
  COMMENT '版本號 version no.'
    DEFAULT '0.0.0.1',
  name           VARCHAR(128)           NOT NULL
  COMMENT '項目名稱 project name',
  create_date    TIMESTAMP              NOT NULL
  COMMENT '建立日期 create date'
    DEFAULT now(),
  user_id        INT(10)                NOT NULL
  COMMENT '建立人ID, project author id',
  introduction   TEXT                   NULL
  COMMENT '項目描述 project introduction',
  workspace_mode INT(10)                NOT NULL
  COMMENT '工做區提交模式(類VSS or SVN),暫時棄用了。 Workspace submit mode, deprecated.'
    DEFAULT 1,
  stage          INT(10)                NOT NULL
  COMMENT '項目階段,暫時廢棄;project stage, temply deprecated.  1-design 2-developing 3-debug'
    DEFAULT 1,
  project_data   LONGTEXT               NULL
  COMMENT '項目JSON數據,存放當前最新的版本。 project JSON data, saved the newest version of the project',
  group_id       INT(10)                NULL
  COMMENT '分組ID group id',
  related_ids    VARCHAR(128)           NOT NULL
  COMMENT '路由ID,用於指定與哪些項目共享mock數據; router id, used for specify sharing data with which projects.'
    DEFAULT '',
  update_time    DATETIME               NOT NULL
  COMMENT '更新時間 update time',
  mock_num       INT                    NOT NULL
  COMMENT 'mock次數 mock num'
    DEFAULT 0,
  access_type    TINYINT                NOT NULL
  COMMENT '權限控制, 10普通, 0私有'
    DEFAULT 10,

  FOREIGN KEY (user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * user list and user table
 * used for creating multiple to multiple mapping
 * access_level:
 *     1 - read
 *     2 - read&write
 *     3 - read&write&manage
 */
CREATE TABLE tb_project_and_user
(
  project_id   INT(10) NOT NULL,
  user_id      INT(10) NOT NULL,
  access_level INT     NOT NULL
    DEFAULT 1,

  PRIMARY KEY (project_id, user_id),
  FOREIGN KEY (project_id) REFERENCES tb_project (id),
  FOREIGN KEY (user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * module table
 */
CREATE TABLE tb_module
(
  id           INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  project_id   INT(10)                NOT NULL,
  name         VARCHAR(256)           NOT NULL,
  introduction VARCHAR(128)           NULL,

  FOREIGN KEY (project_id) REFERENCES tb_project (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * page table
 */
CREATE TABLE tb_page
(
  id           INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name         VARCHAR(56)            NOT NULL,
  module_id    INT(10)                NOT NULL,
  introduction TEXT                   NULL,
  template     VARCHAR(128)           NULL,

  FOREIGN KEY (module_id) REFERENCES tb_module (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * action table
 * request_type:
 *     1 - get
 *     2 - post
 *     3 - ajax get
 *     4 - ajax post
 */
CREATE TABLE tb_action
(
  id                INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name              VARCHAR(256)           NOT NULL,
  description       TEXT                   NULL,

  /* request block */
  request_type      INT                    NOT NULL
  COMMENT '請求類型get/post/put/delete等等 request type'
    DEFAULT 1, /** request_type = 99, mount type **/
  request_url       TEXT                   NULL,

  disable_cache     TINYINT                NOT NULL
  COMMENT '禁用Mock緩存 disable mock cache'
    DEFAULT 0,

  /* response block */
  response_template TEXT                   NULL
  COMMENT '響應模板地址, 暫時棄用。 response template address, temply deprecated.'

)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * action and page table
 * used for creating multiple to multiple mapping
 */
CREATE TABLE tb_action_and_page
(
  action_id INT(10) NOT NULL,
  page_id   INT(10) NOT NULL,

  FOREIGN KEY (action_id) REFERENCES tb_action (id),
  FOREIGN KEY (page_id) REFERENCES tb_page (id),
  PRIMARY KEY (action_id, page_id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;


/**
 * parameter and parameter mapping
 * complex_parameter has so many parameters(List<Map> or Map)
 */
CREATE TABLE tb_complex_parameter_list_mapping
(
  complex_parameter_id INT(10) NOT NULL,
  parameter_id         INT(10) NOT NULL,

  PRIMARY KEY (complex_parameter_id, parameter_id),
  FOREIGN KEY (complex_parameter_id) REFERENCES tb_parameter (id),
  FOREIGN KEY (parameter_id) REFERENCES tb_parameter (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * parameter and action's request mapping
 */
CREATE TABLE tb_request_parameter_list_mapping
(
  action_id    INT(10) NOT NULL,
  parameter_id INT(10) NOT NULL,

  PRIMARY KEY (action_id, parameter_id),
  FOREIGN KEY (action_id) REFERENCES tb_action (id),
  FOREIGN KEY (parameter_id) REFERENCES tb_parameter (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * parameter and action's response mapping
 */
CREATE TABLE tb_response_parameter_list_mapping
(
  action_id    INT(10) NOT NULL,
  parameter_id INT(10) NOT NULL,

  PRIMARY KEY (action_id, parameter_id),
  FOREIGN KEY (action_id) REFERENCES tb_action (id),
  FOREIGN KEY (parameter_id) REFERENCES tb_parameter (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;


/**************************************************
 *                                                *
 *          workspace module                      *
 *                                                *
 **************************************************/


/**
 * workspace, deprecated 工做區,暫時未使用
 */
CREATE TABLE tb_workspace
(
  id                    INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  project_id            INT(10)                NOT NULL,
  user_id               INT                    NOT NULL,
  create_date           TIMESTAMP              NOT NULL
    DEFAULT now(),
  update_date           DATETIME               NOT NULL,
  project_data          LONGTEXT               NOT NULL,
  project_data_original LONGTEXT               NOT NULL,

  FOREIGN KEY (project_id) REFERENCES tb_project (id),
  FOREIGN KEY (user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * workspace save, deprecated 工做區保存草稿,暫時未使用
 */
CREATE TABLE tb_workspace_save
(
  id           INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  workspace_id INT(10)                NOT NULL,
  update_date  DATETIME               NOT NULL,
  project_data LONGTEXT               NOT NULL,

  FOREIGN KEY (workspace_id) REFERENCES tb_workspace (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * check in table
 * every API document submit saved here, used for version control.
 * 每一次提交記錄在這裏,用於版本管理和回滾控制
 * workspaceMode 1-VSS 2-SVN
 */
CREATE TABLE tb_check_in
(
  id             INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  create_date    TIMESTAMP              NOT NULL
    DEFAULT now(),
  tag            VARCHAR(128)           NULL
  COMMENT 'tag標籤 暫時未使用 deprecated',
  user_id        INT(10)                NOT NULL
  COMMENT '提交人 submit user id',
  project_id     INT(10)                NOT NULL
  COMMENT '提交的項目ID submit project id',
  description    TEXT                   NULL
  COMMENT '提交描述 submit description',
  version        VARCHAR(128)           NOT NULL
  COMMENT '版本號 version no.',
  project_data   LONGTEXT               NOT NULL
  COMMENT '項目JSON數據 project json data',
  workspace_mode INT(10)                NOT NULL
  COMMENT '工做區模式(棄用) workspace mode(deprecated)',
  log            TEXT                   NULL
  COMMENT '更新日誌,用於存儲與最近一個版本的對比差別。暫時未使用。update log, used for calculate versions differences. Deprecated.',

  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (project_id) REFERENCES tb_project (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * user settings table
 * 用戶配置表
 */
CREATE TABLE tb_user_settings
(
  user_id INT(10)      NOT NULL,
  `key`   VARCHAR(128) NOT NULL
  COMMENT '配置KEY config key',
  `value` VARCHAR(128) NOT NULL
  COMMENT '配置VALUE config value',

  PRIMARY KEY (user_id, `key`),
  FOREIGN KEY (user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * user notification table
 * 用戶通知表
 */

CREATE TABLE tb_notification
(
  id             INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  user_id        INT(10)                NOT NULL
  COMMENT '接受通知的用戶id; user id to be notified.',
  target_user_id INT(10)                NOT NULL
  COMMENT '上下文用戶id; context user id',
  type_id        SMALLINT               NOT NULL
  COMMENT '1-文檔修改,2-被加入新項目',
  param1         VARCHAR(128)           NULL
  COMMENT '1,2-項目id',
  param2         VARCHAR(128)           NULL
  COMMENT ' 1,2-項目名稱',
  param3         TEXT                   NULL
  COMMENT '備用預留 reserved',
  create_time    TIMESTAMP              NOT NULL
  COMMENT '建立時間 create time'
    DEFAULT now(),

  is_read        SMALLINT               NOT NULL
  COMMENT '是否已讀 is notification read'
    DEFAULT 0,

  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (target_user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * corporation table
 * 公司表
 */
CREATE TABLE tb_corporation
(
  id          INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name        VARCHAR(256)           NOT NULL,
  logo_url    VARCHAR(256)           NULL,
  user_id     INT(10)                NULL,
  access_type TINYINT                NOT NULL
  COMMENT '權限控制, 10普通, 20公開'
    DEFAULT 10,
  `desc`      TEXT                   NOT NULL
  COMMENT '備註',

  FOREIGN KEY (user_id) REFERENCES tb_user (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;


/**
 * product line table
 * 生產線表
 */
CREATE TABLE tb_production_line
(
  id             INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name           VARCHAR(256)           NOT NULL,
  project_num    INT(10)                NOT NULL
    DEFAULT 0,
  corporation_id INT(10)                NOT NULL,
  user_id        INT(10)                NOT NULL,

  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (corporation_id) REFERENCES tb_corporation (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * project group table
 * 項目分組表
 */
CREATE TABLE tb_group
(
  id                 INT(10) AUTO_INCREMENT NOT NULL
    PRIMARY KEY,
  name               VARCHAR(256)           NOT NULL,
  production_line_id INT(10)                NOT NULL,
  user_id            INT(10)                NOT NULL,

  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (production_line_id) REFERENCES tb_production_line (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

/**
 * 規則表,存儲經過Open API設置的Mock規則
 * Stored mock rules set by Open API
 */
CREATE TABLE tb_rule (
  action_id   INT(10)  NOT NULL
    PRIMARY KEY,
  rules       TEXT     NOT NULL, -- JSON規則
  update_time DATETIME NOT NULL
    DEFAULT NOW(), -- 最近更新時間

  FOREIGN KEY (action_id) REFERENCES tb_action (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;

CREATE TABLE tb_corporation_and_user
(
  user_id        INT(10) NOT NULL,
  corporation_id INT(10) NOT NULL,
  role_id        INT(10) NOT NULL,

  PRIMARY KEY (user_id, corporation_id),
  FOREIGN KEY (user_id) REFERENCES tb_user (id),
  FOREIGN KEY (corporation_id) REFERENCES tb_corporation (id),
  FOREIGN KEY (role_id) REFERENCES tb_role (id)
)
  ENGINE = InnoDB
  DEFAULT CHARSET = utf8;


-- required base data
INSERT INTO tb_role (name) VALUES ('god');
INSERT INTO tb_role (name) VALUES ('admin');
INSERT INTO tb_role (name) VALUES ('user');
-- removed unused qa/pm/rd roles


INSERT INTO tb_user (account, password, email, create_date, last_login_date, name) VALUES
  ('admin', 'RESERVED', 'admin@example.com', NOW(), NOW(), 'admin');

INSERT INTO tb_role_and_user (user_id, role_id) VALUES (1, 1);

-- INSERT INTO tb_corporation (name, logo_url, user_id) VALUES ('MyTeam', 'empty', 1);
-- 新版RAP能夠自建團隊,不須要插入默認團隊了。
-- RAP v0.11.5+ users can create teams by their own, so there's no need to set default team.
View Code

而後再執行一下下面這句

SET @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

好 看看本地數據是否有了對應的表接口如圖:

2 裏面說的安裝redis 地址就是坑有沒有呢?

下載地址:https://github.com/dmajkic/redis/downloads (下載好對應的文件 進行解壓後 把好比個人電腦是64位的那把這個文件拷貝到D:盤的一個新文件夾中)

而後做者應該是筆誤了 關於執行路徑寫錯了 下圖應該是第二個執行命令 注意順序(在本身的文件夾中去執行對應的命令)

 

最後三個服務一塊兒啓動好了,若是登錄不成功 很正常從新註冊一個用戶,而後驗證有點小坑 不過不影響大局給!

最後的最後 但願你們安裝愉快!

 

工具包集合:百度雲盤下載地址

連接:http://pan.baidu.com/s/1i5scmKP 密碼:uzhm

相關文章
相關標籤/搜索