黑白梦

常用 Node.js 异步 http 请求库

整理一些用过的 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);
});