@antelopejs/interface-api-util

中文文档
0.3.0发布于 2026/11/05Apache-2.0TypeScriptCommonJS零依赖构建来源已验证近 30 天下载 1.4万

AntelopeJS helpers for API handlers: request assertions, input validation and rate limiting

原始使用文档
文档目录8 节
  1. What it offers
  2. Implementations
  3. Install
  4. Quick start
  5. Documentation
  6. Compatibility
  7. Contributing
  8. License

@antelopejs/interface-api-util

npm License Discord Docs

Request validation and rate limiting helpers for handlers written against @antelopejs/interface-api. Every failure becomes an HTTPResult error response.

Part of AntelopeJS. Used by AntelopeJS DMS, the open-source back office for your PostgreSQL, MongoDB or RethinkDB database.

What it offers

  • assert(condition, code, message) throws an HTTPResult when the condition is falsy and narrows its type when it holds.
  • assertValidation(body, validator) runs a synchronous validator, such as a Zod parse, and turns a thrown error into an error response, 400 by default.
  • @RateLimit(limit, windowMs) caps calls to a handler per client in a fixed window and answers 429 beyond it.

Implementations

The helpers run in your module. They need the API interface served by a module:

ModuleNotes
@antelopejs/apiImplements @antelopejs/interface-api and @antelopejs/interface-api-util

Install

Add the package to the module that declares routes:

pnpm add @antelopejs/interface-api-util

Then add an implementation of the API interface to the project:

ajs project modules add @antelopejs/api

Quick start

import {
  Controller,
  Get,
  HTTPResult,
  Parameter,
} from "@antelopejs/interface-api";
import { RateLimit, assert } from "@antelopejs/interface-api-util";

const BOOKS = new Map([["1", { title: "The Glass Meridian" }]]);

export class BookController extends Controller("/books") {
  @Get(":id")
  @RateLimit(100, 60_000)
  async getBook(@Parameter("id") id: string) {
    const book = BOOKS.get(id);
    assert(book, 404, "Book not found");
    return new HTTPResult(200, book);
  }
}

Place @RateLimit directly below the route decorator. Placed above it, @RateLimit throws when the class is defined.

Documentation

Compatibility

The module declares these peer dependencies:

PackageSupportedTested with
@antelopejs/interface-api>=0.3.0 <1.0.00.2.0
@antelopejs/interface-core>=0.2.4 <1.0.00.4.0

Contributing

Read CONTRIBUTING.md before you open a pull request. The local checks are:

pnpm install
pnpm lint
pnpm test

License

Apache-2.0

版本与发布记录

@antelopejs/interface-api-util 共发布 9 个版本,首次发布于 2026/03/23;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.3.0latest2026/11/051 天前
0.2.02026/10/298 天前
0.1.32026/10/1720 天前
0.1.22026/07/213 个月前
0.1.12026/06/164 个月前
0.1.02026/06/104 个月前

关于 @antelopejs/interface-api-util 的常见问题

@antelopejs/interface-api-util 是什么?

AntelopeJS helpers for API handlers: request assertions, input validation and rate limiting

如何安装 @antelopejs/interface-api-util?

在项目目录运行 npm install @antelopejs/interface-api-util,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@antelopejs/interface-api(>=0.3.0 <1.0.0)、@antelopejs/interface-core(>=0.2.4 <1.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@antelopejs/interface-api-util 支持 TypeScript 吗?

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

@antelopejs/interface-api-util 支持 ESM 还是 CommonJS?

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

@antelopejs/interface-api-util 可以商用吗?

@antelopejs/interface-api-util 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@antelopejs/interface-api-util 的下载量有多少?

根据 npm 官方下载统计,@antelopejs/interface-api-util 在 2026/10/06 – 2026/11/04 这 30 天内被下载 14,107 次,日均约 470 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@antelopejs/interface-api-util 还在维护吗?

最新版本 0.3.0 发布于 2026/11/05(1 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/03/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。