摘要:將要代理的接口服務(wù)器主機(jī)名可選。如設(shè)為,并且沒有配置選項(xiàng),將自動(dòng)切換為方式連接接口服務(wù)器可選。所請(qǐng)求的接口是否,可選值為。如果接口是,并且需要數(shù)字證書,可使用該選項(xiàng)指定存放地址可選。
justreq(JR Server)
相信各位程序猿、攻城獅都有遇到過接口服務(wù)器不給力的情況。有時(shí)接口服務(wù)器宕機(jī),我們只能干瞪眼。有時(shí)也會(huì)想,如果能把接口拷貝到本地,那該多好。但是,先不說在本地運(yùn)行接口服務(wù)代價(jià)有多大,接口一旦升級(jí),又得再拷貝一次。為什么不能既能即時(shí)更新最新接口,又能不懼接口離線呢?答案是可以!
為了解決上述問題,我用業(yè)余時(shí)間開發(fā)了justreq。就像它的名字一樣:“just request”,never offline!,它可以幫助你實(shí)現(xiàn)接口永不離線的夢想。
其原理就是在本地進(jìn)行接口緩存,當(dāng)接口服務(wù)處于離線狀態(tài)時(shí),它將直接從本地調(diào)取緩存。默認(rèn)20分鐘更新一次緩存,對(duì)于服務(wù)器來說,也大大減輕了負(fù)擔(dān)。
自動(dòng)緩存每一次接口請(qǐng)求,當(dāng)測試服務(wù)器宕機(jī)時(shí),依然可以從容開發(fā)
接口替身服務(wù),當(dāng)后臺(tái)GG們還沒開發(fā)好接口時(shí),可以用json、txt等替代
獨(dú)有jrs腳本,仿php,可以定制更靈活的接口替身,甚至可以用來開發(fā)小型站點(diǎn)
支持ES6、ES7,開發(fā)更高效
支持CORS跨域,前端開發(fā)也可以放心使用
支持https,無論接口采用http還是https,都能從容應(yīng)對(duì)
安裝首先下載安裝Node.js,然后運(yùn)行以下命令安裝justreq命令行工具
npm install -g justreq-cli
運(yùn)行以下命令安裝主程序
npm install justreq初始化
運(yùn)行以下命令進(jìn)行初始化
justreq init
配置完成后,將在當(dāng)前目錄生成“.justreq”文件,你可以隨時(shí)按自己需求進(jìn)行配置
使用運(yùn)行以下命令啟動(dòng)justreq
justreq start
然后把你的接口地址直接指向justreq服務(wù)(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);
如果需要在啟動(dòng)的同時(shí)更新緩存,可以用以下命令
justreq start -c
如果接口地址臨時(shí)改動(dòng)了,而你又不想修改配置文件,可以用以下命令
justreq start -h temp.yourhost.com
可運(yùn)行如下命令查看更多命令行參數(shù)
justreq start --help進(jìn)階玩法 JRS腳本
接下來要鄭重推薦我們獨(dú)創(chuàng)的jrs腳本了。該腳本基于javascript,因此你完全不需要任何學(xué)習(xí)成本即可上手。先來一段:
// 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對(duì)象外,我們新增加了一些必要的全局函數(shù)、屬性
屬性name | description |
---|---|
$_GET | 獲取querystring |
$_POST | 獲取POST方式提交的表單數(shù)據(jù) |
$_COOKIE | 獲取cookies |
$_HEADER | 獲取header |
$_FILES | 獲取表單上傳的文件。注意,如需要上傳文件,須將form編碼方式設(shè)置為enctype="multipart/form-data" |
name | description |
---|---|
echo(string) | 向頁面輸出字符串 |
end([string]) | 結(jié)束當(dāng)前腳本,輸出字符串為可選參數(shù)。注:請(qǐng)務(wù)必使用該方法結(jié)束腳本,否則腳本將運(yùn)行至超時(shí) |
sendFile(filepath) | 也可直接使用文件做為輸出。使用該方法時(shí),不必再使用end()結(jié)束腳本 |
setMime(suffix) | 設(shè)置當(dāng)前輸出的mimetype;缺省將嘗試json,如自動(dòng)檢測不通過,將切換為txt??蛇x值為:txt、html、css、xml、json、js、jpg、jpeg、gif、png、svg。如需設(shè)置其它類型,可直接使用setHeader函數(shù)設(shè)置“Content-Type” |
setCookie(name, value) | 設(shè)置輸出的cookies。完整參數(shù):setCookie(name, value [, expires [, path [, domain [, secure [, httponly]]]]]) |
setHeader(name, value) | 設(shè)置header,其中"Server"、"Date"由JR Server自動(dòng)設(shè)置,不允許修改 |
由于jrs腳本完全基于js,并運(yùn)行于Node.js環(huán)境,因此,你可以使用Node.js下面的一切優(yōu)秀模塊來進(jìn)行開發(fā)。
并且,只要你的Node.js版本支持,你也可以使用ES6/ES7來編寫jrs
為了更好的發(fā)揮justreq的功能,我們提供了一些配置規(guī)則
name | description |
---|---|
href | 接口路徑,必填??梢允褂谜齽t表達(dá)式 |
ignoreArgs | 可忽略字段,以逗號(hào)分割,可以忽略一些非關(guān)鍵字段。例如跳過常見的防緩存的?v=1483884433384,則設(shè)置 {"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 | 必須。將要代理的接口服務(wù)器主機(jī)名 |
port | 可選。將要代理的接口服務(wù)器端口,默認(rèn)80。(如設(shè)為443,并且沒有配置proxyHttps選項(xiàng),將自動(dòng)切換為https方式連接接口服務(wù)器) |
cacheTime | 可選。多久更新緩存,默認(rèn)20分鐘 |
cachePath | 可選。緩存存放路徑,默認(rèn).jr/cache |
substitutePath | 可選。替身文件存放路徑,默認(rèn).jr/subs |
jrPort | 可選。JR Server服務(wù)端口,默認(rèn)8000 |
proxyTimeout | 可選。請(qǐng)求接口超時(shí)時(shí)間,默認(rèn)6秒 |
proxyHttps | 可選。所請(qǐng)求的接口是否https,可選值為:auto、yes、no。默認(rèn)auto(檢測port是否443)。 |
ssl_ca | 可選。如果接口是https,并且需要數(shù)字證書,可使用該選項(xiàng)指定ca.pem存放地址 |
ssl_key | 可選。如果接口是https,并且需要數(shù)字證書,可使用該選項(xiàng)指定key.pem存放地址 |
ssl_cert | 可選。如果接口是https,并且需要數(shù)字證書,可使用該選項(xiàng)指定cert.pem存放地址 |
onCors | 可選。是否開啟cors跨域,可選值為:yes、no,默認(rèn)yes |
rules | 可選。參照RULES配置 |
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/61817.html