justreq(JR Server)
置信列位顺序猿、攻城狮都有遇到过接口效劳器不给力的状况。偶然接口效劳器宕机,我们只能干瞪眼。偶然也会想,假如能把接口拷贝到当地,那该多好。然则,先不说在当地运转接口效劳价值有多大,接口一旦晋级,又得再拷贝一次。为何不能既能立即更新最新接口,又能不惧接口离线呢?答案是能够!
为了处理上述问题,我用业余时候开辟了justreq。就像它的名字一样:“just request”,never offline!,它能够协助你完成接口永不离线的妄想。
其道理就是在当地举行接口缓存,当接口效劳处于离线状况时,它将直接从当地调取缓存。默许20分钟更新一次缓存,关于效劳器来讲,也大大减轻了累赘。
特征
自动缓存每一次接口要求,当测试效劳器宕机时,依旧能够自在开辟
接口替身效劳,当背景GG们还没开辟好接口时,能够用json、txt等替换
独占jrs剧本,仿php,能够定制更天真的接口替身,以至能够用来开辟小型站点
支撑ES6、ES7,开辟更高效
支撑CORS跨域,前端开辟也能够放心运用
支撑https,不管接口采纳http照样https,都能自在应对
装置
起首下载装置Node.js,然后运转以下敕令装置justreq敕令行东西
npm install -g justreq-cli
运转以下敕令装置主顺序
npm install justreq
初始化
运转以下敕令举行初始化
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设置 |