永不離線的測試接口服務——justreq

justreq(JR Server)

相信各位程序猿、攻城獅都有遇到過接口服務器不給力的狀況。有時接口服務器宕機,咱們只能乾瞪眼。有時也會想,若是能把接口拷貝到本地,那該多好。可是,先不說在本地運行接口服務代價有多大,接口一旦升級,又得再拷貝一次。爲何不能既能即時更新最新接口,又能不懼接口離線呢?答案是能夠!
爲了解決上述問題,我用業餘時間開發了justreq。就像它的名字同樣:「just request」,never offline!,它能夠幫助你實現接口永不離線的夢想。
其原理就是在本地進行接口緩存,當接口服務處於離線狀態時,它將直接從本地調取緩存。默認20分鐘更新一次緩存,對於服務器來講,也大大減輕了負擔。
運行效果圖javascript

特性

  • 自動緩存每一次接口請求,當測試服務器宕機時,依然能夠從容開發php

  • 接口替身服務,當後臺GG們還沒開發好接口時,能夠用json、txt等替代css

  • 獨有jrs腳本,仿php,能夠定製更靈活的接口替身,甚至能夠用來開發小型站點html

  • 支持ES六、ES7,開發更高效前端

  • 支持CORS跨域,前端開發也能夠放心使用java

  • 支持https,不管接口採用http仍是https,都能從容應對node

安裝

首先下載安裝Node.js,而後運行如下命令安裝justreq命令行工具正則表達式

npm install -g justreq-cli

運行如下命令安裝主程序npm

npm install justreq

初始化

運行如下命令進行初始化json

justreq init

配置完成後,將在當前目錄生成「.justreq」文件,你能夠隨時按本身需求進行配置

使用

運行如下命令啓動justreq

justreq start

而後把你的接口地址直接指向justreq服務(JR Server)便可。例如:

// const API_HOST = "https://test.yourhost.com";
const API_HOST = "http://127.0.0.1:8000";
$.get(API_HOST + "/getInfo.do?userId=1001", callback);

若是須要在啓動的同時更新緩存,能夠用如下命令

justreq start -c

若是接口地址臨時改動了,而你又不想修改配置文件,能夠用如下命令

justreq start -h temp.yourhost.com

可運行以下命令查看更多命令行參數

justreq start --help

進階玩法

JRS腳本

接下來要鄭重推薦咱們首創的jrs腳本了。該腳本基於javascript,所以你徹底不須要任何學習成本便可上手。先來一段:

// getUser.jrs
var userId = $_GET['userId'];
var users = {
    1001 : {name:'zhangsan', age: 22},
    1002 : {name:'lily', age: 21}
};
var user = users[userId];
setCookie('userName', user.name);
echo(JSON.stringify(user));
end();

除了你所熟知的javascript對象外,咱們新增長了一些必要的全局函數、屬性

屬性

name description
$_GET 獲取querystring
$_POST 獲取POST方式提交的表單數據
$_COOKIE 獲取cookies
$_HEADER 獲取header
$_FILES 獲取表單上傳的文件。注意,如須要上傳文件,須將form編碼方式設置爲enctype="multipart/form-data"

方法

name description
echo(string) 向頁面輸出字符串
end([string]) 結束當前腳本,輸出字符串爲可選參數。注:請務必使用該方法結束腳本,不然腳本將運行至超時
sendFile(filepath) 也可直接使用文件作爲輸出。使用該方法時,沒必要再使用end()結束腳本
setMime(suffix) 設置當前輸出的mimetype;缺省將嘗試json,如自動檢測不經過,將切換爲txt。可選值爲:txt、html、css、xml、json、js、jpg、jpeg、gif、png、svg。如需設置其它類型,可直接使用setHeader函數設置「Content-Type」
setCookie(name, value) 設置輸出的cookies。完整參數:setCookie(name, value [, expires [, path [, domain [, secure [, httponly]]]]])
setHeader(name, value) 設置header,其中'Server'、'Date'由JR Server自動設置,不容許修改

因爲jrs腳本徹底基於js,並運行於Node.js環境,所以,你可使用Node.js下面的一切優秀模塊來進行開發。
而且,只要你的Node.js版本支持,你也可使用ES6/ES7來編寫jrs


RULES配置

爲了更好的發揮justreq的功能,咱們提供了一些配置規則

name description
href 接口路徑,必填。可使用正則表達式
ignoreArgs 可忽略字段,以逗號分割,能夠忽略一些非關鍵字段。例如跳過常見的防緩存的?v=1483884433384,則設置 {"ignoreArgs" : "v"}
noCache 不容許緩存該接口,缺省值爲容許
subs 接口替身,推薦使用咱們的jrs腳本,也能夠是json、txt

如下是一份樣例:

// .justreq
{
    ...
  "rules": [
    {
      "href":       "user.do\\?id=(\\d+)",
      "subs":       "user.jrs?userId=$1"
    },
    {
      "href":       "login.do",
      "noCache":    true
    },
    {
      "href":       "getGoodsInfo.do",
      "ignoreArgs": "v,token,timestamp"
    }
  ]
}

其它配置項

name description
host 必須。將要代理的接口服務器主機名
port 可選。將要代理的接口服務器端口,默認80。(如設爲443,而且沒有配置proxyHttps選項,將自動切換爲https方式鏈接接口服務器)
cacheTime 可選。多久更新緩存,默認20分鐘
cachePath 可選。緩存存放路徑,默認.jr/cache
substitutePath 可選。替身文件存放路徑,默認.jr/subs
jrPort 可選。JR Server服務端口,默認8000
proxyTimeout 可選。請求接口超時時間,默認6秒
proxyHttps 可選。所請求的接口是否https,可選值爲:auto、yes、no。默認auto(檢測port是否443)。
ssl_ca 可選。若是接口是https,而且須要數字證書,可以使用該選項指定ca.pem存放地址
ssl_key 可選。若是接口是https,而且須要數字證書,可以使用該選項指定key.pem存放地址
ssl_cert 可選。若是接口是https,而且須要數字證書,可以使用該選項指定cert.pem存放地址
onCors 可選。是否開啓cors跨域,可選值爲:yes、no,默認yes
rules 可選。參照RULES配置
相關文章
相關標籤/搜索