新闻资讯

新闻资讯 产品更新

Reqman,一个可以快速帮助工程师进行api测试的工具,同时也是一个基于nodejs的爬虫工具。

编辑:016     时间:2020-02-13

雷克曼

Reqman是一个可以迅速帮助工程师进行api测试的工具,同时也是一个基于nodejs的爬虫工具。

github:github.com/lisniuse/re ...

安装

这是一个通过npm Registry提供的Node.js模块。

在安装之前,下载并安装Node.js。需要Node.js 8.0或更高版本。

使用npm install命令完成安装:

$ npm install reqman 复制代码

约会使用

// 使用的是 Node.js `require()` const Reqman = require('reqman'); // Using ES6 imports import Reqman from 'reqman'; 复制代码

特性

  • ✔︎链式API
  • ✔︎开箱即用
  • ✔︎可爬虫,可模拟请求
  • ✔︎适用于复杂强替换场景
  • ✔︎基于nodejs强大的请求库请求

超简单的入门教程

Reqman被设计成像request一样,是进行http调用的最简单的方式。它支持https,替代情况下逐步重定向。

你只需要在返回一个objectpush方法的参数中编写一个匿名函数,返回你的请求参数即可。

例子1:个别请求

const Reqman = require('reqman'); //只需要设置一个请求基地址 const req = new Reqman({ baseUrl: "http://127.0.0.1:3000" }); //比如你想获取所有用户的统计信息,你可以这样写 req
  .push(function () { return { method: "GET", url: `/api/user/count` }
  })
  .done(); 复制代码

如果您指定showInfo参数为false,那么就不会打印结果到屏幕上,像这样:

req
  .push(function () { return { method: "GET", url: `/api/user/count`, showInfo: false }
  })
  .done(); 复制代码

例子2:链式API

链API中,第一个请求的结果作为第二个请求的参数。就像这样:

const Reqman = require('reqman'); //需要设置一个请求基地址 const req = new Reqman({ baseUrl: "http://127.0.0.1:3000" }); //登陆的用户账号密码 const user = { username: "admin", password: "admin" }

req //请求登陆地址 .push(function () { return { method: "POST", url: `/api/login`, data: user, //传入刚刚定义的user对象到data complete: function (selfElement) { //返回该队列的requestElement对象 let response = selfElement.result.response; let body = JSON.parse(response.body); //注意:建议不要把公共变量直接挂到reqman的实例上,可能会覆盖requman的属性和方法,reqman提供了一个store对象用于存储请求过程中需要存储的公共变量。 this.store.userToken = body.data.token; //拿到用户token }
    }
  }) //然后我们以登陆之后的获取到的token来更新用户的信息。 .push(function () { return { method: "POST", url: `/api/user/updateInfo`, headers: { 'Authorization': this.store.userToken //之后的请求中可以直接使用store里的变量 }, data: { nickname: "jack ma" //更新昵称为 jack ma }
    }
  })
  .done()//just do it. 复制代码

例字3:完整体现reqman的api和特性的例子

'use strict' const req = new Reqman({ baseUrl: "http://127.0.0.1:3000", output: "./request-result.txt", //将请求后返回的结果同时追加写入到指定的文件路径 specList: { type: 'valid', //参数:invalid 或 valid。定义有效或者无效的请求。 list: ['bob'] //让名为bob的请求有效,其余的请求失效。如果type为invalid,则相反。 }
}); //请求链 req. //定义一个名为bob的请求,prevElement参数表示上一个请求的requestElement对象。 push('bob', function (prevElement) { return { method: "POST", url: `/?name=bob`, headers: { //附带自定义headers 'content-type': 'application/octet-stream' }, complete: function (selfElement) { //请求完毕后的回调函数 }
    }
  }) //定义一个名为jack的请求,prevElement参数表示上一个请求的requestElement对象。 .push('jack', function (prevElement) { return { baseUrl: 'http://127.0.0.1:4000', //为该请求自定义基地址 output: "./jack-result.txt", //为该请求自定义输出文件路径 method: "GET", url: `/`, data: { name: 'jack' }, showInfo: false, //不将返回的body信息打印出来 complete: function (selfElement) { //请求完毕后的回调函数 //do something... }
    }
  })
  .done(function () { //退出程序 process.exit(1);
  }) 复制代码

更多例子

更多示例在项目的examples文件夹中,你可以直接运行:

node getHelloworld.js
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐