@aspida/node-fetch

中文文档
1.14.0发布于 2023/08/16MITTypeScriptESM + CJS零依赖近 30 天下载 3134

node-fetch client for aspida

原始使用文档
文档目录5 节
  1. Getting Started
  2. Installation
  3. Make HTTP request from application
  4. Serialize GET parameters manually
  5. License

@aspida/node-fetch


aspida
node-fetch client for aspida.


Getting Started

Installation

  • Using npm:

    $ npm install aspida node-fetch @aspida/node-fetch
    $ npm install @types/node-fetch --save-dev
    
  • Using Yarn:

    $ yarn add aspida node-fetch @aspida/node-fetch
    $ yarn add @types/node-fetch --dev
    

Make HTTP request from application

src/index.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);
    }
  }
})();

Serialize GET parameters manually

src/index.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" }]
})();

License

@aspida/node-fetch is licensed under a MIT License.

版本与发布记录

@aspida/node-fetch 共发布 57 个版本,首次发布于 2020/03/24;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.14.0latest2023/08/163 年前
1.13.32023/08/043 年前
1.13.22023/08/043 年前
1.13.12023/08/043 年前
1.13.02023/08/033 年前
1.12.02023/04/093 年前

关于 @aspida/node-fetch 的常见问题

@aspida/node-fetch 是什么?

node-fetch client for 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 和提交记录判断。