摘要:将要代理的接口服务器主机名可选。如设为,并且没有配置选项,将自动切换为方式连接接口服务器可选。所请求的接口是否,可选值为。如果接口是,并且需要数字证书,可使用该选项指定存放地址可选。
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
为了更好的发挥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配置 |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/61817.html
摘要:将要代理的接口服务器主机名可选。如设为,并且没有配置选项,将自动切换为方式连接接口服务器可选。所请求的接口是否,可选值为。如果接口是,并且需要数字证书,可使用该选项指定存放地址可选。 justreq(JR Server) 相信各位程序猿、攻城狮都有遇到过接口服务器不给力的情况。有时接口服务器宕机,我们只能干瞪眼。有时也会想,如果能把接口拷贝到本地,那该多好。但是,先不说在本地运行接口服...
摘要:而则是主要用于接口缓存的一款。初始化完成后,将在当前目录生成文件。其它未在规则中的请求,将直接代理并缓存下来,而不进行转发。每条记录包含和两个属性,并且也是随机自动生成的。 概述 搜到这篇文章之前,相信你已对Mock Server及mock.js有一定的了解。简单概括,Mock Server即模拟服务器,用于模拟后端api服务。mock.js是国内的高云开发的一款json数据生成器,主...
摘要:今天,阿里数据库事业部研究员张瑞,将为你讲述双数据库技术不为人知的故事。这十年,阿里巴巴数据库团队一直有一个使命推动中国数据库技术变革。 第十个双11即将来临之际,阿里技术推出《十年牧码记》系列,邀请参与历年双11备战的核心技术大牛,一起回顾阿里技术的变迁。 今天,阿里数据库事业部研究员张瑞,将为你讲述双11数据库技术不为人知的故事。在零点交易数字一次次提升的背后,既是数据库技术的一次...
摘要:表示在它下面列出来的资源只有在在线的情况下才能访问,他们不会被离线存储,所以在离线情况下无法使用这些资源。不过,如果在和中有一个相同的资源,那么这个资源还是会被离线存储,也就是说的优先级更高。离线的情况下,浏览器就直接使用离线存储的资源。 最近由于找工作一直没时间也没有精力更新博客,找工作真是一件苦逼的事情啊。。。不抱怨了,我们来看看HTML5的新特性---离线存储吧。 随着Web A...
阅读 1370·2021-10-14 09:43
阅读 962·2021-09-10 10:51
阅读 1394·2021-09-01 10:42
阅读 2163·2019-08-30 15:55
阅读 552·2019-08-30 15:55
阅读 2310·2019-08-30 14:21
阅读 1667·2019-08-30 13:04
阅读 3440·2019-08-29 13:09