整理一些用过的 Node.js 异步 http 请求库,包括 node-fetch 、axios 、 superagent 、request 。
node-fetch
如果项目中使用 fetch 库,通过 node-fetch ,可在 Node.js 使用基本一致的语法。
https://github.com/node-fetch/node-fetch
npm install node-fetch
使用:
import fetch from 'node-fetch';
const response = await fetch('https://api.github.com/users/github');
const data = await response.json();
console.log(data);
axios
如果项目中常用 axios ,在 Node.js 中也直接使用即可。
npm install axios
语法与浏览器中几乎一致
import axios from 'axios';
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
superagent
可用于 Node.js 和浏览器的请求库,在 Node.js 和浏览器中拥有同样的 api
https://github.com/visionmedia/superagent
npm i -S superagent
npm i -D @types/superagent
比如使用 superagent 获取原始html文本
async getRowHtml() {
const res = await superagent.get(this.url)
return res.text // 原始的 html
}
request (传统但兼容性好)
传统的异步 http 请求库,目前项目已处于 deprecated 状态,也已经停止更新。
但它的好处是兼容性很强,如果遇到一些奇怪的问题,比如某些环境无法传输文件,可尝试使用该库。
https://github.com/request/request
这个库还是回调函数的风格。用起来稍微麻烦一点点。
import request from 'request';
request('http://www.google.com', function (error, response, body) {
// 输出异常
console.error('error:', error);
// 如果收到响应,则打印响应状态代码
console.log('statusCode:', response && response.statusCode);
// 打印接口响应信息
console.log('body:', body);
});