@dunx/http

中文文档
3.10.6发布于 2026/10/30MITTypeScriptES Module构建来源已验证近 30 天下载 5054

Bun.serve dunx 框架的适配器:控制器、中间软件和WebSocket网关

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 这是什么
  4. 子路径
  5. 页:1
  6. 许可证

翻译:

基于类的控制器和 网络安全网关 页:1 双关,服务于 Bun.serve 有标准 作装饰. 没有 JavaScript 路由器: Bun 内置 routes 处理路径 参数和 HTTP 方法.

HTTP 和 WebSockets 共享一个 listen()一个服务器和一个端口,没有 express, (中文(简体) ), ws 或者说 socket.io。 。 。 .

安装

bun add @dunx/http @dunx/core @dunx/transform

添加 preload = ["@dunx/transform/preload"] 改为 bunfig.toml 用于构造器 注射,一次在顶级,一次在下 [test]。 。 。 .

使用量

import { inject, Module } from '@dunx/core';
import { Controller, Get, HttpFactory, Post, type Input } from '@dunx/http';
import { z } from 'zod'; // or Valibot, or ArkType, or none at all

const createUser = { body: z.object({ name: z.string() }) } as const;
const oneUser = { params: z.object({ id: z.coerce.number() }) } as const;

@Controller('users')
export class UsersController {
  readonly #users = inject(UsersService);

  @Get('/')
  list() {
    return this.#users.findAll(); // plain values become Response.json()
  }

  @Get('/:id', oneUser)
  one(input: Input<typeof oneUser>) {
    return this.#users.find(input.params.id); // a number, already validated
  }

  @Post('/', createUser)
  create(input: Input<typeof createUser>) {
    return this.#users.create(input.body.name); // 201, no Response.json()
  }
}

@Module({ controllers: [UsersController], providers: [UsersService] })
export class UsersModule {}

const app = await HttpFactory.create(AppModule);
app.enableShutdownHooks();
await app.listen(3000);

这是什么

每行链接到覆盖它的向导.

区域它包含什么指南
主计长和路线单词装饰器、路径参数、前缀、状态代码主计长
输入body, (中文(简体) ), query, (中文(简体) ), params 超过标准Schema验证
中间软件和警卫一个延伸点, @UseGuards, (中文(简体) ), @Roles, (中文(简体) ), @Public中间软件和警卫
网络安全网关@Gateway管理者们, PubSub,多节点继电器网络软件
服务器发送事件@Sse, (中文(简体) ), SseStream画作 心跳, Last-Event-ID主计长
请求日志每个请求一个结构化条目,默认情况下日志
跟踪上下文W3C 战车 traceparent 默认通过和宣传日志
西班牙语每个请求的SERVER间隔和每个呼叫的CLIENT间隔 OtelModule追踪
计量每道计数和计时,默认关闭计量
卫生和排水/health/live, (中文(简体) ), /health/ready准备在推出期间健康检查
调弦@Throttle, (中文(简体) ), @SkipThrottle,内存和 Redis 计数器中间软件和警卫
境外复原能力HttpRetryClassifier: 哪个状态重试,以及 Retry-After复原力
静态文件Bun.file 在挂载后带有缓存策略部署
压缩bun自己的压缩机上的克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克特克克特克特克特克特克克特克特克特克特克特克特克克克特克克克特克特克特克特克特克克部署
难民保护委员会连接和gRPC-Web上的原生软件难民保护委员会

子路径

子路径包含
@dunx/http上面的东西
@dunx/http/client外出的一半: HttpService重试与后退, HttpModule
@dunx/http/connect连接和gRPC-Web上的原生服务,作为中间软件安装
@dunx/http/internal框架本身的管道。 没有稳定的承诺

@dunx/http/internal 用于 dunx 自己的软件包 : @dunx/dashboard, (中文(简体) ), @dunx/mcp 财务报告和审定财务报表 @dunx/openapi。不要从应用程序导入它,因为它可以改变任何 释放.

页:1

  • 路线在靴子上找到,包括从基类继承的路线,所以 抽象控制器的子类服务于其父的 @Get 方法也一样.
  • 两个相同方法和路径的处理器在启动时失败, 错误名称 都一样 否则Bun会不说就留着其中一个.
  • 处理器可以返回一个 Response,任何JSON可循环值,或 undefined 一个204.
  • Authorize 财务报告和审定财务报表 gate() 保护管理员页面。 他们收到原始请求 当拒绝访问时回答404,或发送 Response 你继续往前走, 例如,登录页. @dunx/dashboard 财务报告和审定财务报表 @dunx/openapi 都接受一个, 所以你写了一次访问规则.
  • Schemas,解析器和状态代码在启动时一出. 处理a 请求中没有元数据查询.
  • 每个请求都加入呼叫者的W3C跟踪(traceparent) (中文(简体) ). 它的日志线携带 traceId, (中文(简体) ), spanId, (中文(简体) ), parentSpanId 财务报告和审定财务报表 traceFlags,而反应包含 (单位:千美元) traceresponse 头曰. requestLogging: { trace: false } 关掉两个. { traceResponse: false } 保留跟踪字段,只放信头, 它可以保存大约500纳秒的请求。 没有单独的关联 id.
  • metrics: true 添加请求数和每个路线的直径图,用于 大约35纳斯请求.
  • @dunx/http/connect 为连接和gRPC-Web服务,但不是本地的gRPC. 土著 gRPC将其状态发送到HTTP拖车中 Bun.serve 无法发送, 所以 请求与 content-type: application/grpc 得到一个415 解释原因. @connectrpc/connect 财务报告和审定财务报表 @bufbuild/protobuf 是可选的同伴依赖关系, 你留着你自己的 .proto 工具链. ThrottleGuard 适用于 RPC 路径 还有.

许可证

麻省理工学院

版本与发布记录

@dunx/http 共发布 83 个版本,首次发布于 2026/08/02;过去 12 个月发布了 83 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.10.6latest2026/10/3014 天前
3.10.52026/10/2222 天前
3.10.42026/10/2024 天前
3.10.32026/10/1430 天前
3.10.22026/10/081 个月前
3.10.12026/09/261 个月前

关于 @dunx/http 的常见问题

@dunx/http 是什么?

Bun.serve dunx 框架的适配器:控制器、中间软件和WebSocket网关

如何安装 @dunx/http?

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

@dunx/http 支持 TypeScript 吗?

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

@dunx/http 支持 ESM 还是 CommonJS?

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

@dunx/http 可以商用吗?

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

@dunx/http 的下载量有多少?

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

@dunx/http 还在维护吗?

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