当前位置: 首页 > 后端技术 > Node.js

永不下线测试接口服务——justreq

时间:2023-04-03 15:17:20 Node.js

justreq(JRServer)相信各位程序员攻城狮都遇到过接口服务器不给力的情况。有时接口服务器宕机,我们只能发呆。有时候我也觉得,如果能把接口复制到本地就好了。不过,先不说本地运行接口服务的成本。一旦接口升级,就得重新复制??。为什么不能实时更新最新的界面而不怕界面掉线呢?答案是肯定的!为了解决以上问题,我利用业余时间开发了justreq。就像它的名字一样:“只要请求,永不离线!”,它可以帮助您实现界面永不离线的梦想。原理是在本地缓存接口。接口服务下线时,会直接从本地调用缓存。默认情况下,缓存每20分钟更新一次,大大减轻了服务器的负担。该功能自动缓存每个接口请求。当测试服务器宕机时,您仍然可以从容开发接口替代服务。当后台GG还没有开发界面的时候,可以用json,txt等代替特有的jrs脚本,模仿php,可以自定义更灵活的界面替身,甚至可以用来开发小站支持ES6、ES7,开发更高效支持CORS跨域,前端开发也可以放心使用支持https,无论接口使用http还是https,安装都可以从容应对下载先安装Node.js,然后运行如下命令安装justreq命令行工具npminstall-gjustreq-cli运行如下命令安装主程序npminstalljustreqInitialize运行如下命令初始化justreqinit配置完成后,“.justreq会在当前目录下生成”文件,你可以随时根据自己的需要进行配置。运行以下命令启动justreqjustreqstart将你的接口地址直接指向justreq服务(JRServer)。例如://constAPI_HOST="https://test.yourhost.com";constAPI_HOST="http://127.0.0.1:8000";$.get(API_HOST+"/getInfo.do?userId=1001“,打回来);如果启动时需要更新缓存,可以使用下面的命令justreqstart-c如果接口地址临时改变了,但是又不想修改配置文件,可以使用下面的命令justreqstart-htemp.yourhost.com运行以下命令查看更多命令行参数justreqstart--helpadvancedgameplayJRSscript接下来郑重推荐我们原版的jrs脚本。脚本基于javascript,无需任何学习成本即可上手。让我们从一个部分开始://getUser.jrsvaruserId=$_GET['userId'];varusers={1001:{name:'zhangsan',age:22},1002:{name:'lily',age:21}};varuser=users[userId];setCookie('userName',user.name);echo(JSON.stringify(user));end();除了大家熟悉的javascript对象,我们还增加了一些必要的全局函数和attribute属性namedescription$_GET获取querystring$_POST获取提交的表单数据通过POST$_COOKIE获取cookies$_HEADER获取header$_FILES获取表单上传的文件。注意,如果需要上传文件,必须设置表单编码方式为enctype="multipart/form-data"methodnamedescriptionecho(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)来设置输出cookie。完整参数:setCookie(name,value[,expires[,path[,domain[,secure[,httponly]]]]])setHeader(name,value)设置header,其中'Server'和'Date'由自动设置JRServer设置,不允许修改。由于jrs脚本完全基于js,运行在Node.js环境下,所以可以使用Node.js下所有优秀的模块进行开发。并且,只要你的Node.js版本支持,你也可以使用ES6/ES7编写jrsRULES配置。为了更好的发挥justreq的功能,我们提供了一些配置规则nameddescriptionhref接口路径,这是必须的。可以使用正则表达式ignoreArgs忽略字段,以逗号分隔,部分非关键字段可以忽略。比如跳过常见的反缓存?v=1483884433384,set{"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"}]}namedescriptionhost必须的其他配置项。要代理的接口服务器主机名端口是可选的。要代理的接口服务器端口,默认80。(如果设置为443,并且没有配置proxyHttps选项,会自动切换到https连接接口服务器)cacheTime可选。多久更新一次缓存,默认是20分钟cachePath是可选的。缓存存放路径,默认.jr/cachesubstitutePath可选。订阅文件存放路径,默认.jr/subsjrPort可选。JRServer服务端口,默认8000proxyTimeout可选。请求接口超时时间,默认6秒proxyHttps可选。请求的接口是否为https,可选值有:auto、yes、no。默认为自动(检查端口是否为443)。ssl_ca是可选的。如果接口是https,需要数字证书,可以用这个选项指定ca.pem存储地址,ssl_key可选。如果接口为https,需要数字证书,可以使用该选项指定key.pem存储地址,ssl_cert可选。如果接口为https,需要数字证书,可以使用该选项指定cert.pem的存放地址。onCors是可选的。是否开启cors跨域,可选值有:yes,no,默认yesrules可选。参考规则配置