# @derhuerst/http-basic 中文文档

规范地址：https://npmcn.com/package/%40derhuerst/http-basic/

版本：8\.2\.4
npm 元数据更新时间：2022-07-04T14:54:34.438Z
中文译文更新时间：2026-11-12T00:31:51.225Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40derhuerst/http-basic
原文对照：https://npmcn.com/package/%40derhuerst/http-basic/?lang=original
项目主页：https://github.com/derhuerst/http-basic#readme
源码仓库：https://github.com/derhuerst/http-basic

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：45.3 kB，36 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=6\.0\.0
- 运行依赖：4 个
- 首次发布：2020-04-05T22:33:46.664Z
- 最新版本发布：2022-07-04T14:54:34.362Z
- 近 30 天下载量：12849908（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

极低水平包装圆形 http.request/https.request

## 安装

```sh
npm install @derhuerst/http-basic
```

也可以使用：`pnpm add @derhuerst/http-basic`、`yarn add @derhuerst/http-basic`、`bun add @derhuerst/http-basic`

## README

# 网页

**这是临时叉子 [`ForbesLindesay/http-basic`](https://github.com/ForbesLindesay/http-basic)。 。 。 .**

* * *

简单包装 http.request/https.request

[![Build Status](https://img.shields.io/travis/ForbesLindesay/http-basic/master.svg)](https://travis-ci.org/ForbesLindesay/http-basic) [![Dependency Status](https://img.shields.io/david/ForbesLindesay/http-basic.svg)](https://david-dm.org/ForbesLindesay/http-basic) [![NPM version](https://img.shields.io/npm/v/http-basic.svg)](https://www.npmjs.org/package/http-basic)

## 安装

```
npm install http-basic
```

## 使用量

```js
var request = require('http-basic');

var options = {followRedirects: true, gzip: true, cache: 'memory'};

var req = request('GET', 'http://example.com', options, function (err, res) {
  if (err) throw err;
  console.dir(res.statusCode);
  res.body.resume();
});
req.end();
```

**方法 :**

Http方法(例如:. `GET`, (中文(简体) ), `POST`, (中文(简体) ), `PUT`, (中文(简体) ), `DELETE` (例如)

**url : (中文(简体) )**

Url作为字符串(例如. `http://example.com`) (中文(简体) ). 它必须是完全合格的,无论是https还是https.

**选项:**

-   `headers` - (违约) `{}`) http页眉
-   `agent` - (默认: `false`控制器保持活性(见 [http://nodejs.org/api/http.html#http http request options callback (中文(简体) )](http://nodejs.org/api/http.html#http_http_request_options_callback)(中文(简体) )
-   `duplex` - (默认: `true` 除外 `GET`, (中文(简体) ), `OPTIONS` 财务报告和审定财务报表 `HEAD` 请求)允许您在请求上明确设置一个机构,使用通常没有机构的方法
-   `followRedirects` - (默认: `false`) - 如果真实,则遵循方向调整(注意这只影响回调的结果)
-   `maxRedirects` - (默认: `Infinity`) - 限制允许的重定向次数.
-   `allowRedirectHeaders` (默认 : `null`) - 允许重定向(如果 `null`) (中文(简体) ).
-   `gzip` (默认 : `false`) - 自动接受gzip并分解编码. 这对用户完全透明.
-   `cache` - (默认: `null`) - (英语) `'memory'` 或者说 `'file'` 来使用缓存中构建的默认值,或者您可以通过自己的缓存执行.
-   `timeout` (默认 : `false`\- 如果在给定的毫秒数内没有回复,则取消.
-   `socketTimeout` (默认 : `false`\- 打电话 `req.setTimeout` 如果未看到给定的毫秒数的新数据,则内部会暂停请求.
-   `retry` (默认 : `false`) - 重试获得请求. 设定为 `true` 当请求错误或返回一个大于或等于400的状态代码时重试(也可以是一个需要的函数) `(err, req, attemptNo) => shouldRetry`(中文(简体) )
-   `retryDelay` (默认 : `200`) - 复试之间的延迟(也可以设定为需要 `(err, res, attemptNo) => delay`(中文(简体) )
-   `maxRetries` (默认 : `5`)——放弃前重试的次数.
-   `ignoreFailedInvalidation` (默认 : `false`) - 如果存在删除缓存响应的问题,缓存是否应当吞入错误. 注意启用此设置可能导致不正确的缓存数据返回用户 .
-   `isMatch` - 说吧 `(requestHeaders: Headers, cachedResponse: CachedResponse, defaultValue: boolean) => boolean` - 测试缓存回复是否与请求相匹配的默认行为.
-   `isExpired` - 说吧 `(cachedResponse: CachedResponse, defaultValue: boolean) => boolean` - 测试缓存回复是否过期的默认行为
-   `canCache` - 说吧 `(res: Response<NodeJS.ReadableStream>, defaultValue: boolean) => boolean` - 超越默认行为以测试是否能够缓存一个响应

**回调 :**

召回是用 `err` 作为第一个论点 `res` 作为第二个论点. `res` 是一个 [http-应答对象](https://github.com/ForbesLindesay/http-response-object)它具有以下属性:

-   `statusCode` - 代表HTTP状态代码的数字
-   `headers` - 代表 HTTP 信头的对象
-   `body` - 可读流 重现请求体.
-   `url` - 请求的 URL( 如果是重定向, 这是请求的最后 URL)

**返回 :**

如果这种方法是 `GET`, (中文(简体) ), `DELETE` 或者说 `HEAD`返回时 `undefined`。 。 。 .

否则, 它返回请求正文的可写流 .

## 执行缓存

A 类 `Cache` 是一个具有三种方法的对象:

-   `getResponse(url, callback)` - 获取缓存的响应对象
-   `setResponse(url, response)` - 缓存响应对象
-   `invalidateResponse(url, callback)` - 删除不再有效的回复

缓存响应对象是一个具有下列属性的对象:

-   `statusCode` - 人数
-   `headers` - 对象(串键值对)
-   `body` - 流(二进制数据流)
-   `requestHeaders` - 对象(串键值对)
-   `requestTimestamp` - 人数

`getResponse` 应使用可选错误调用回调符, 且其中之一 `null` 或缓存的响应对象,取决于在缓存中是否可以找到url. 仅 `GET`s为缓存.

`setResponse` 只需吞入任何错误( 或使用 `console.warn`) (中文(简体) ).

`invalidateResponse` 如果无法使回复无效,则应当以可选错误调用回调.

缓存还可以定义来自 `lib/cache-utils.js` 以覆盖被缓存的行为。 目前仍然只能缓存"获得"请求,尽管这可以被更改.

## 许可证

麻省理工学院

## 常见问题

### @derhuerst/http-basic 是什么？

极低水平包装圆形 http\.request/https\.request

### 如何安装 @derhuerst/http-basic？

在项目目录运行 npm install @derhuerst/http-basic，或使用 pnpm add / yarn add / bun add。

### @derhuerst/http-basic 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @derhuerst/http-basic 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @derhuerst/http-basic 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=6\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @derhuerst/http-basic 可以商用吗？

@derhuerst/http-basic 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @derhuerst/http-basic 的下载量有多少？

根据 npm 官方下载统计，@derhuerst/http-basic 在 2026/10/12 – 2026/11/10 这 30 天内被下载 12,849,908 次，日均约 428,330 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @derhuerst/http-basic 还在维护吗？

最新版本 8\.2\.4 发布于 2022/07/04（4 年前）；至今共发布 5 个版本，其中过去 12 个月发布了 0 个；首次发布于 2020/04/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

