RAP2 詳細部署、操作指南

RAP2 詳細部署、操作指南

什麼是RAP2

RAP通過GUI工具幫助WEB工程師更高效的管理接口文檔,同時通過分析接口結構自動生成Mock數據、校驗真實接口的正確性,使接口文檔成爲開發流程中的強依賴。有了結構化的API數據,RAP可以做的更多,而我們可以避免更多重複勞動。

基於RAML的接口定義、文檔生成、Mock Server完成了定義和使用的分離,通過一套規範完成的接口定義,可以用不同的工具得到適應不同API管理系統的輸出,有更多的可能性,同時保持了核心定義不變。

RAP較之於RAML,前者更加集中,所有的定義、文檔、mock都在同一個服務中完成,並且實時生效,方便快捷,如果只考慮方便易用,RAP是更好的選擇,而RAML顯得更加繁瑣,更適合於公開的接口定義,方便在各個系統之間流轉。

項目地址

RAP地址:https://github.com/thx/rap ,但目前RAP2已經發布,RAP已經停止維護。

RAP2前後端分離,因此RAP2有兩個地址:後端https://github.com/thx/rap2-delos 前端http://github.com/thx/rap2-dolores

前後端部署指南

前後端部署在同一臺機器上,所需環境如下:

  • Node.js 8.9.4+
  • npm 6.9.0+
  • MySQL 5.7+
  • Redis 4.0+

已有系統環境:

  • CentOS 7.2
  • Git 1.8.3.1

後端

安裝node

假設nodejs已安裝,這裏nodejs安裝不做記錄,安裝參考:https://www.cnblogs.com/liangjiongyao/p/9120535.html

node和npm驗證:

> node -v
v8.11.3
 
> npm -v
6.9.0

如果node鏡像速度太慢,建議使用taobao的cnpm代替npm,使用方法:https://npm.taobao.org/

後面就可以直接使用cnpm xxx代替npm xxx,當然這兩個命令是等價的,只不過cnpm使用的是tabao鏡像源,速度更快。

安裝mysql

假設mysql已安裝好,或者使用已有的mysql服務,這裏使用已有的mysql服務。

安裝redis

假設redis已安裝好,或者使用已有的redis服務,這裏使用已有的redis服務。

下載源碼

git clone https://github.com/thx/rap2-delos.git

修改配置文件

進入目錄:rap2-delos/src/config

目錄文件如下:

├── config.dev.ts
├── config.local.ts
├── config.prod.ts
└── index.ts

修改三個config文件的mysql數據庫配置和redis配置:

serve: {
   port: 8080,
},
...
db: {
   dialect: 'mysql',
   host: '192.168.20.61',
   port: 3306,
   username: 'root',
   password: 'root',
   database: 'RAP2_DELOS_APP',
   pool: {
     max: 5,
     min: 0,
     idle: 10000,
   },
   logging: false,
 },
 

其他兩個配置文件也修改對應的db配置,redis配置只需修改prod,因爲安裝在本機,所以local和dev的redis配置可以不用修改。

端口默認是80,這裏修改爲8080。

之前嘗試過只修改prod配置,但是create-db好像不成功,爲保證100%成功,直接改三個文件。

其中prod的配置略有區別但道理都是一樣:

serve: {
    port: (process.env.EXPOSE_PORT && parseInt(process.env.EXPOSE_PORT)) || 8080,
},
...
db: {
    dialect: 'mysql',
    host: process.env.MYSQL_URL || '192.168.20.61',
    port: (process.env.MYSQL_PORT && parseInt(process.env.MYSQL_PORT)) || 3306,
    username: process.env.MYSQL_USERNAME || 'root',
    password: process.env.MYSQL_PASSWD || 'root',
    database: process.env.MYSQL_SCHEMA || 'RAP2_DELOS_APP',
    pool: {
        max: 80,
        min: 0,
        idle: 20000,
        acquire: 20000,
    },
    logging: false,
},
redis: {
    host: process.env.REDIS_URL || 'localhost',
    port: (process.env.REDIS_PORT && parseInt(process.env.REDIS_PORT)) || 6379
}

MySQL創建schema

在配置的mysql數據庫中創建rap2需要的schema:

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

編譯

# 切換到根目錄
cd ../..
# 安裝依賴包
npm install
# 安裝PM2
# 可能會出現什麼gcc版本過低等問題,出現後請自行升級
npm install -g pm2
# 安裝TypeScript編譯包
npm install -g typescript
# 編譯
# 修改了項目的代碼或配置文件之後一定重新編譯,不然修改不起作用
# 如果報錯說沒有權限創建文件夾,可以在後面加上--unsafe-perm參數
npm run build

初始化數據庫

# 初始化數據庫
# 確保數據庫可連,控制檯會打印初始化內容和進度
npm run create-db
# 檢查
npm run check

啓動後端

# 啓動
npm run start
# 控制檯輸出成功

檢查是否啓動成功

訪問服務器8080端口,出現如下信息表明啓動成功:
在這裏插入圖片描述

查看後端日誌

有時前端報錯,需要查看後端日誌,操作如下:

# 查詢pm2進程
pm2 ls
┌──────────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬──────┬───────────┬──────┬──────────┐
│ App name         │ id │ version │ mode │ pid   │ status │ restart │ uptime │ cpu  │ mem       │ user │ watching │
├──────────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼──────┼───────────┼──────┼──────────┤
│ rap-server-delos │ 0  │ 1.0.0   │ fork │ 15499 │ online │ 0       │ 8h     │ 0.2% │ 35.7 MB   │ root │ disabled │
└──────────────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴──────┴───────────┴──────┴──────────┘
# 拿到後端的pm2 id 爲0
# 查看實時日誌
pm2 logs 0
# 日誌將會以類似tail的方式打開,再次操作即可看見錯誤信息

前端

前端和後端啓動過程差不多:

# 獲取源代碼
git clone https://github.com/thx/rap2-dolores.git
 
# 修改配置文件
cd rap2-dolores/src/config
# 文件目錄如下
├── config.dev.js
├── config.prod.js
└── index.js
# 修改兩個配置文件的如下部分
serve: 'http://192.168.5.224:8080'
# 注意ip不能寫localhost,即使是在同一個機器上寫的前端和後端
 
# 回到根目錄
cd ../..
# 安裝依賴包
npm install
# 編譯
# 修改了項目的代碼或配置文件之後一定重新編譯,不然修改不起作用
# 如果報錯說沒有權限創建文件夾,可以在後面加上--unsafe-perm參數
npm run build
 
# 安裝serve
npm install -g serve 
# 啓動
# 其中./build是編譯生成的文件路徑,8090是前端訪問的端口
serve -s ./build -p 8090
# 這裏啓動後會阻塞會話,可以使用nohup,並且指定全路徑啓動
nohup serve -s /root/rap/build -p 8090 &

訪問服務器8090端口:
在這裏插入圖片描述

RAP2操作指南

賬號系統

可直接申請賬號,申請賬號後可登陸。

權限系統

  • 登陸後可查看所有公開倉庫(那些稀奇古怪的倉庫是初始化數據,到時可以用管理員賬戶刪除)
    在這裏插入圖片描述但僅僅有查看查庫列表的權限,如果需要查看倉庫內容的權限,請繼續往下看
  • 登陸後可創建倉庫
  • 自己創建的倉庫只能自己修改,可以編輯倉庫添加成員,加入的成員可以修改和添加接口
    在這裏插入圖片描述
  • 可以創建團隊,然後創建團隊的API倉庫,這樣團隊裏的人就都有權限修改API
    在這裏插入圖片描述

API管理

api可以隨時創建、修改、刪除,並且保存後會mock接口會馬上生效。mock-server基於mockjs,接口的入參和出參都可以根據一些特殊規則來生成:

  • 創建API
    在這裏插入圖片描述
  • 定義入參出參:
    入參有parameter和body兩種方式,mock後,並不會檢查參數是否滿足生成規則,只會檢查必填參數是否填寫,生成規則適用於隨機生成一個參數用於測試API:
    在這裏插入圖片描述
  • 入參和出參規則
    類型 生成規則 初始值 導入寫法 描述 舉例
    string min-max 任意字符串 {"name|min-max": "xyz"} 名稱爲name的屬性,其值爲“xyz”字符串重複n次,min<=n<=max
    count 任意字符串 {"name|count": "xyz"} 名稱爲name的屬性,其值爲“xyz”重複count次
    number +1 任意整數 {"name|+1": value} 作爲array屬性中某個object對象的屬性name,列表中對象的該屬性會從value開始自增
    min-max 任意數字,可以是小數 {"name|min-max": 5} 名稱爲name的屬性,其值爲min-max的隨機整數
    min-max.dmin-dmax 任意數字,可以是小數 {'name|min-max.dmin-dmax': 1.2} 名稱爲name的屬性,其值爲整數部分爲min-max,小數部分保留dmin-dmax位的小數 其中小數部分或整數部分可以固定

    boolean 1 true/false {"name|1": true} 名稱爲name的屬性,其值爲true/false的概率都是1/2
    min-max true/false {"name|min-max": value} 名稱爲name的屬性,其值爲 value 的概率是 min / (min + max) 值爲 !value 的概率是 max / (min + max)
    object count   {"name|count": {"key": value}} 名稱爲name的屬性,其值爲對象中任取count個屬性組成的新對象
    min-max   {"name|min-max": {"key": value}} 名稱爲name的屬性,其值爲對象中任取min-max個屬性組成的新對象
    array min-max   {"name|min-max": [{"key": value}]} 名稱爲name的屬性,其值爲數組中對象重複min-max次
    count   {"name|count": [{"key": value}]} 名稱爲name的屬性,其值爲數組中對象重複count次
    function   函數體 {"name": function(){}} 名稱爲name的屬性,其值爲執行函數 function返回值 函數的上下文爲屬性 'name' 所在的對象
    regexp   /regexp/ {"name": /regexp/} 名稱爲name的屬性,其值爲滿足regexp正則表達式的任意值
    佔位符(string)   @placeholder_name {"name": "@placeholder_name"} 名稱爲name的屬性,其值爲placeholder_name函數隨機生成的值生成
    更多佔位符請參考mockjs文檔 http://mockjs.com/0.1/#Mock.Random
  • 導入功能:
    導入時,屬性值不能爲null,否則點擊提交API會卡住,查看後臺日誌已報錯,所有屬性都不支持null值,即使導入成功,提交編輯的時候也會卡住(F12查看network已經失敗,頁面不會有明顯提示)
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章