# RAP Node Client

## Guide

1. sudo npm install -g rapnc （安装 rapnc）

2. rapnc serve（启动rapnc服务器的在线模式）

3. sudo rapnc pull 88 （获取项目编号88的所有RAP接口数据）

4. 关闭步骤2启动的rapnc服务

5. rapnc serve --offline （启动离线模式）

6. 打开浏览器，点击 [http://localhost:3000/nodeclient/mockjs/88/simple/datatypes.do](http://localhost:3000/nodeclient/mockjs/88/simple/datatypes.do)，看看 RAP+Mockjs 正在用绳命为你随机生成的数据吧。

## 功能总览

- serve：在本地启动Node Client服务器，提供RAP配置的接口数据、Mockjs渲染后的数据等

- pull：将RAP配置的接口数据从RAP服务器获取到本地，并缓存，从而减轻RAP服务器压力，并支持离线访问

- check：利用RAP接口数据，校验真实数据的正确性

- 提供多种获取接口数据的URL调用方式，如 `mockjs` `mockjsrule` 等

## serve：启动Node Client服务器

**任何人都能当RAP数据服务器，提供假数据。**

### 两种模式

启动服务器分为两种模式：

- `online` 模式，直接连接RAP数据库（推荐在RAP服务器上使用online模式）

- `offline` 模式，根据 `项目` 获取接口数据后，使用本地的接口数据来渲染假数据。

### 使用方式

`rapnc serve [options]`

`rapnc serve --online` 启动 online模式

`rapnc serve --offline` 启动 offline模式

默认情况下 `rapnc serve` 启动的是 `online` 模式

根据离线模式的功能，可以看出，在使用offline提供服务时，必须把 `项目` 对应的接口数据获取下来，这就是 `rapnc pull PROJECT_ID` 子命令的任务。

### 选项

- `--online` 启动online模式

- `--offline` 启动offline模式

- `--port` 可以指定启动服务器的端口号

- `-h` `--help` 可以查看命令帮助

## pull：从RAP服务器获取项目的RAP接口数据，存储在本地

### 使用方式

 `rapnc pull PROJECT_ID [options]`

如果碰到没有权限的问题，请 `sudo`

### 选项

- `--host` 提供pull服务的目标主机，一般是运行了 `rapnc serve` 命令的机器

- `--port` 提供pull服务的目标端口号

- `-h` `--help` 可以查看命令帮助

### 其他说明

- `PROJECT_ID` 是用户在RAP系统中新建项目的项目ID。

- 执行命令成功以后，将会在 `cache/projects` 文件夹下，创建 `PROJECT_ID.json` 文件，存放接口数据。

- 有了接口数据，就可以通过 `rapnc serve --offline` 启动离线服务器，轻松使用离线模式了

## check：批量检测接口数据的正确性

### 使用方式

`rapnc check PROJECT_ID|all [options]`

### 选项

- `-d` `--test-dir` 测试用例的目录

- `-c` `--current` 把当前目录作为测试用例目录

- `--host` 测试服务器的主机名，对应运行 `rapnc serve` 的机器

- `--port` 测试服务器的端口号

- `-h` `--help` 可以查看命令帮助

### 注意事项

- 测试目录默认为 `RAPNC/cache/tests` 目录，该目录下的子目录名对应 `PROJECT_ID`，PROJECT_ID 目录下的每一个js文件是一个测试用例

## 部分URL调用方式约定

- `/mockjs/PROJECT_ID/ACTION_URL` 返回mockjs渲染后的 `真实` 假数据

- `/mockjsrule/PROJECT_ID/ACTION_URL` 返回mockjs渲染前的接口数据

- `/pulling/PROJECT_ID` 返回的是项目下的所有接口数据 （rapnc pull 就是往这个url上发送请求的）

- `/checking/PROJECT_ID/ACTION?PARAMS` 测试项目下某个Action返回内容的正确性 （rapnc check 就是往这个url上发送请求的）
