@blgc/openapi-router

中文文档
0.1.0发布于 2024/12/22MITTypeScriptESM + CJS近 30 天下载 1772

紧绕快递和Hono等网络框架的路由器,提供OpenAPI类型安全和与Valibot和Zod等验证库的无缝整合

此软件包已被标记为弃用

Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

中文使用文档
文档目录5 节
  1. 实例
  2. 动机
  3. 使用量
  4. 快递Js
  5. 浩诺

@blgc/openapi-router banner

GitHub License NPM bundle minzipped size NPM total downloads Join Discord

状况:实验

@blgc/openapi-router 是围绕快递和Hono等网络框架的路由器的薄包装器,提供OpenAPI类型安全,并与Valibot和Zod等验证库进行无缝整合.

  • 类型安全: 与 TypeScript 为强类型的安全而构建并支持 openapi-typescript 类型
  • 框架不可知论: 与Express,Hono等通俗网络框架相兼容
  • 第一次验证: 与 Valibot, Zod 和其他验证器合并,以确保请求符合预期类型
  • 模块可扩展( L): 具有以下特征的易于扩展: withExpress(). . . . . . .

实例

动机

在网络框架路由器周围创建一个类型安全而直截了当的包装器,使用 OpenAPI 计划进行无缝整合 openapi-typescript 并确保与Zod和Valibot等图书馆进行类型验证.

使用量

快递Js

@blgc/openapi-router 环绕 快速路由器 实现完全类型安全,并使用验证器执行您的 OpenAPI-Schema.

虽然TypeScript类型确保了编译时间的安全,但它们不执行运行时间的计时验证. 对于运行时间合规,需要与Zod或Valibot等验证库相整合. 尽管您必须手动定义验证规则,但这些规则对于确保这些规则的正确定义是安全的.

import { createExpressOpenApiRouter } from '@blgc/openapi-router';
import { Router } from 'express';
import * as v from 'valibot';
import { vValidator } from 'validation-adapters/valibot';
import { paths } from './gen/v1'; // OpenAPI-generated types
import { PetSchema } from './schemas'; // Custom reusable Zod schema for validation

export const router: Router = Router();
export const openApiRouter = createExpressOpenApiRouter<paths>(router);

// GET /pet/{petId}
openApiRouter.get('/pet/{petId}', {
    pathValidator: vValidator(
        v.object({
            petId: v.number() // Validate that petId is a number
        })
    ),
    handler: (req, res) => {
        const { petId } = req.params; // Access validated params
        res.send({ name: 'Falko', photoUrls: [] });
    }
});

// POST /pet
openApiRouter.post('/pet', {
    bodyValidator: vValidator(PetSchema), // Validate request body using PetSchema
    handler: (req, res) => {
        const { name, photoUrls } = req.body; // Access validated body data
        res.send({ name, photoUrls });
    }
});

完整实例

浩诺

@blgc/openapi-router 环绕 Hono 路由器 实现完全类型安全,并使用验证器执行您的 OpenAPI-Schema.

虽然TypeScript类型确保了编译时间的安全,但它们不执行运行时间的计时验证. 对于运行时间合规,需要与Zod或Valibot等验证库相整合. 尽管您必须手动定义验证规则,但这些规则对于确保这些规则的正确定义是安全的.

Hono 类型脚本集成提供了类型建议 c.json() 基于通用定义的响应类型,但在编译时不强制执行这些类型. 譬如说, c.json('') 即使预期类型是,也不会产生类型错误 {someType: string}这是由于Hono内部使用 TypedResponse<T>,这可以推断,但不严格地执行所传通类. 霍诺讨论

import { createHonoOpenApiRouter } from '@blgc/openapi-router';
import { Hono } from 'hono';
import { zValidator } from 'validation-adapters/zod';
import * as z from 'zod';
import { paths } from './gen/v1'; // OpenAPI-generated types
import { PetSchema } from './schemas'; // Custom reusable Zod schema for validation

export const router = new Hono();
export const openApiRouter = createHonoOpenApiRouter<paths>(router);

// GET /pet/{petId}
openApiRouter.get('/pet/{petId}', {
    pathValidator: zValidator(
        z.object({
            petId: z.number() // Validate that petId is a number
        })
    ),
    handler: (c) => {
        const { petId } = c.req.valid('param'); // Access validated params
        return c.json({ name: 'Falko', photoUrls: [] });
    }
});

// POST /pet
openApiRouter.post('/pet', {
    bodyValidator: zValidator(PetSchema), // Validate request body using PetSchema
    handler: (c) => {
        const { name, photoUrls } = c.req.valid('json'); // Access validated body data
        return c.json({ name, photoUrls });
    }
});

完整实例

版本与发布记录

@blgc/openapi-router 共发布 14 个版本,首次发布于 2024/08/02;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.1.0latest2024/12/221.9 年前
0.0.232024/12/221.9 年前
0.0.222024/11/281.9 年前
0.0.212024/11/062 年前
0.0.202024/09/192 年前
0.0.192024/08/292 年前

关于 @blgc/openapi-router 的常见问题

@blgc/openapi-router 是什么?

紧绕快递和Hono等网络框架的路由器,提供OpenAPI类型安全和与Valibot和Zod等验证库的无缝整合注意:该包已被作者标记为弃用——Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

如何安装 @blgc/openapi-router?

在项目目录运行 npm install @blgc/openapi-router,或使用 pnpm add / yarn add / bun add。

@blgc/openapi-router 支持 TypeScript 吗?

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

@blgc/openapi-router 支持 ESM 还是 CommonJS?

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

@blgc/openapi-router 可以商用吗?

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

@blgc/openapi-router 的下载量有多少?

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

@blgc/openapi-router 还在维护吗?

最新版本 0.1.0 发布于 2024/12/22(1.9 年前);至今共发布 14 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/08/02。作者已将其标记为弃用,新项目建议寻找替代方案。