# @aspida/node-fetch 中文文档

规范地址：https://npmcn.com/package/%40aspida/node-fetch/

版本：1\.14\.0
npm 元数据更新时间：2023-10-06T02:38:13.905Z
中文译文更新时间：2026-11-06T23:56:06.873Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40aspida/node-fetch
原文对照：https://npmcn.com/package/%40aspida/node-fetch/?lang=original
项目主页：https://github.com/aspida/aspida/tree/master/packages/aspida-node-fetch#readme
源码仓库：https://github.com/aspida/aspida

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

- 包体积（解压后）：16.3 kB，11 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：aspida ^1\.14\.0，node-fetch 
- 首次发布：2020-03-23T20:29:35.567Z
- 最新版本发布：2023-08-15T20:25:17.768Z
- 近 30 天下载量：3134（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：57（近 12 个月 0 个）

## 中文简介

aspida 的节点比对客户端

## 安装

```sh
npm install @aspida/node-fetch
```

也可以使用：`pnpm add @aspida/node-fetch`、`yarn add @aspida/node-fetch`、`bun add @aspida/node-fetch`

## README

# @ aspida/ 节点比对

  
![aspida](https://aspida.github.io/aspida/logos/png/logo.png "aspida")

 [![npm version](https://img.shields.io/npm/v/@aspida/node-fetch)](https://www.npmjs.com/package/@aspida/node-fetch)[![npm download](https://img.shields.io/npm/dm/@aspida/node-fetch)](https://www.npmjs.com/package/@aspida/node-fetch)

  

[节点比对](https://www.npmjs.com/package/node-fetch) 客户端用于 [阿斯皮达](https://github.com/aspida/aspida/)。 。 。 .

  
  

## 开始

### 安装

-   使用 [无](https://www.npmjs.com/)数字 :
    
    ```sh
    $ npm install aspida node-fetch @aspida/node-fetch
    $ npm install @types/node-fetch --save-dev
    ```
    
-   使用 [雅伦](https://yarnpkg.com/)数字 :
    
    ```sh
    $ yarn add aspida node-fetch @aspida/node-fetch
    $ yarn add @types/node-fetch --dev
    ```
    

### 从应用程序创建 HTTP 请求

`src/index.ts`

```ts
import fetch, { Response } from "node-fetch";
import aspida, { HTTPError } from "@aspida/node-fetch";
import api from "../api/$api";

const fetchConfig = {
  baseURL: "https://example.com/api",
  throwHttpErrors: true, // throw an error on 4xx/5xx, default is false
};

const client = api(aspida(fetch, fetchConfig));
(async () => {
  const userId = 0;
  const limit = 10;

  await client.v1.users.post({ name: "mario" });

  const res = await client.v1.users.get({ query: { limit } });
  console.log(res);
  // req -> GET: https://example.com/api/v1/users/?limit=10
  // res -> { status: 200, data: [{ id: 0, name: "mario" }], headers: {...} }

  try {
    const user = await client.v1.users._userId(userId).$get();
    console.log(user);
    // req -> GET: https://example.com/api/v1/users/0
    // res -> { id: 0, name: "mario" }
  } catch (e) {
    if (e instanceof HTTPError) {
      console.log(e.response instanceof Response); // true
    } else {
      console.log(e.message);
    }
  }
})();
```

### 手动获取参数

`src/index.ts`

```ts
import fetch from "node-fetch";
import aspida, { HTTPError } from "@aspida/fetch";
import qs from "qs";
import api from "../api/$api";

const fetchConfig = {
  paramsSerializer: params => qs.stringify(params),
};

const client = api(aspida(fetch, fetchConfig));
(async () => {
  const users = await client.v1.users.$get({
    // config: { paramsSerializer: (params) => qs.stringify(params) },
    query: { ids: [1, 2, 3] },
  });
  console.log(users);
  // req -> GET: /v1/users/?ids%5B0%5D=1&ids%5B1%5D=2&ids%5B2%5D=3
  // decoded ->             ids[0]=1    &ids[1]=2    &ids[2]=3
  // res -> [{ id: 1, name: "taro1" }, { id: 2, name: "taro2" }, { id: 3, name: "taro3" }]
})();
```

## 许可证

@aspida/node-fetch 依据 [MIT 许可证](https://github.com/aspida/aspida/blob/master/packages/aspida-node-fetch/LICENSE)。 。 。 .

## 常见问题

### @aspida/node-fetch 是什么？

aspida 的节点比对客户端

### 如何安装 @aspida/node-fetch？

在项目目录运行 npm install @aspida/node-fetch，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：aspida（^1\.14\.0）、node-fetch（）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aspida/node-fetch 支持 TypeScript 吗？

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

### @aspida/node-fetch 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @aspida/node-fetch 可以商用吗？

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

### @aspida/node-fetch 的下载量有多少？

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

### @aspida/node-fetch 还在维护吗？

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

