@aglyn/shared-util-rest-api

中文文档
1.19.0发布于 2026/11/07Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 9342

Helpers for writing JSON API routes in Next.js: one response envelope for both the Pages Router (NextApiResponse) and the App Router (Web Response), plus small middleware and cookie utilities. Published mainly as a building block for Aglyn's own apps;

原始使用文档
文档目录5 节
  1. Install
  2. What's in it
  3. Usage
  4. How it fits
  5. License

@aglyn/shared-util-rest-api

Helpers for writing JSON API routes in Next.js: one response envelope for both the Pages Router (NextApiResponse) and the App Router (Web Response), plus small middleware and cookie utilities. Published mainly as a building block for Aglyn's own apps; usable in any Next.js project that wants the same envelope.

Published to npm from the Aglyn monorepo. Versions follow semantic versioning.

Install

npm install @aglyn/shared-util-rest-api

Peer dependency: next (16.3.3).

What's in it

Everything is exported from the package root; each module is also reachable as @aglyn/shared-util-rest-api/<file-name>.

The envelope, JsonResponse:

type JsonResponse = {
  error?: any
  errorCode?: HttpRefCode
  status?: HttpResponseStatus | true
  statusCode?: HttpStatusCode
  statusMessage?: string
  data?: any
}
  • App Router (route.ts): appHandleJsonResponse(statusCode, options?), appHandleJsonSuccess(data), appHandleJsonError(error) - each returns a Response.
  • Pages Router: nextHandleJsonResponse(res, statusCode, options?), nextHandleJsonSuccess(res, data), nextHandleJsonError(res, error) - each writes to a NextApiResponse. Both families put the same shape on the wire. The error variants take the status from error.code or error.statusCode (default 500) and the message from error.message or error.statusMessage.
  • createNewJsonResponse(statusCode, options?) - a bare Response with a JSON content type, for middleware.
  • httpRequestMethodMiddleware(allowed) - a next-api-middleware middleware that answers 405 for methods other than the allowed ones (OPTIONS always passes).
  • initializeMiddleware(middleware) - wraps a Connect-style (req, res, next) middleware in a promise.
  • requireHeader(name, key, handler) and withIdTokenHeader(handler) - wrap a Pages Router handler and answer 400 when the header (id-token for the latter) is missing.
  • getApiRequestCookie(name, request?) and setApiResponseCookie(res, name, value, options?). setApiResponseCookie takes maxAge in milliseconds and serializes object values as j: plus JSON.

Usage

// app/api/things/route.ts
import {
  appHandleJsonError,
  appHandleJsonSuccess,
} from '@aglyn/shared-util-rest-api'

export async function GET() {
  try {
    return appHandleJsonSuccess({ things: [] })
  } catch (error) {
    return appHandleJsonError(error)
  }
}

Note that appHandleJsonError and nextHandleJsonError include the error object itself in the body, so pass them errors that are safe to show to the caller.

How it fits

A shared package: generic, with no knowledge of Aglyn's model. Shared packages may only import other shared packages; this one depends on @aglyn/shared-data-enums (status codes and reference codes), @aglyn/shared-util-errors and @aglyn/shared-util-http. No other library in the monorepo depends on it; Aglyn's apps use it in their API routes.

License

Apache-2.0. Source: https://github.com/aglyn/aglyn/tree/main/libs/shared/util/rest-api

版本与发布记录

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

版本发布日期距今
1.19.0latest2026/11/07今天
1.18.02026/11/07今天
1.17.02026/11/07今天
1.16.02026/11/07今天
1.15.22026/11/061 天前
1.15.12026/11/061 天前

其他发布通道:beta → 1.0.0-beta.296。

关于 @aglyn/shared-util-rest-api 的常见问题

@aglyn/shared-util-rest-api 是什么?

Helpers for writing JSON API routes in Next.js: one response envelope for both the Pages Router (NextApiResponse) and the App Router (Web Response), plus small middleware and cookie utilities. Published mainly as a building block for Aglyn's own apps;

如何安装 @aglyn/shared-util-rest-api?

在项目目录运行 npm install @aglyn/shared-util-rest-api,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:next(^16.3.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aglyn/shared-util-rest-api 支持 TypeScript 吗?

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

@aglyn/shared-util-rest-api 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aglyn/shared-util-rest-api 可以商用吗?

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

@aglyn/shared-util-rest-api 的下载量有多少?

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

@aglyn/shared-util-rest-api 还在维护吗?

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