Skip to content
Our Sponsors
Open in Anthropic

title: 为 Elysia 推出 OpenAPI 类型生成器 sidebar: false editLink: false search: false comment: false head: - - meta - property: 'og:title' content: 为 Elysia 推出 OpenAPI 类型生成器

- - meta
  - name: 'description'
    content: Elysia 现已支持 OpenAPI 类型生成器,这是一个强大的工具,可以从您的 Elysia 路由和类型自动生成 OpenAPI 文档,无需任何手动标注。

- - meta
  - property: 'og:description'
    content: Elysia 现已支持 OpenAPI 类型生成器,这是一个强大的工具,可以从您的 Elysia 路由和类型自动生成 OpenAPI 文档,无需任何手动标注

- - meta
  - property: 'og:image'
    content: https://elysiajs.com/blog/openapi-type-gen/cover.webp

- - meta
  - property: 'twitter:image'
    content: https://elysiajs.com/blog/openapi-type-gen/cover.webp

Blog

为 Elysia 推出 OpenAPI 类型生成器

OpenAPI 类型生成器:为 Elysia 实现自动 API 文档

API 文档在 API 开发中扮演着至关重要的角色。

与团队、供应商或第三方服务合作时,通常需要一份完善的 API 文档,以确保顺畅的集成与协作。

如今大多数框架都将手动 OpenAPI 标注的负担留给了开发者。这可能耗时、容易出错,并且随着 API 的演进而难以维护。

但 Elysia 认真对待 OpenAPI

我们相信 API 文档应该是轻松且自动的,让开发者可以专注于构建出色的 API,而无需担心文档问题。

这就是为什么我们从一开始就在 Elysia 中围绕 OpenAPI 进行构建。

  • 我们确保模式可以用于数据验证、类型推断和 OpenAPI 标注,所有这些都来自单一的真实来源。
  • 我们提供了与 Standard Schema(Zod、Valibot 等)的集成,并在可能时将其转换为 OpenAPI 文档。
  • 我们有一个仅需一行的 OpenAPI 插件,可以为您的 API 添加一个由 Scalar 提供的精美交互式 UI。

Scalar 预览

Elysia 仅用一行代码即可通过 Elysia OpenAPI 插件运行 Scalar UI

但即使是如此卓越的体验,我们仍希望将其推向更高境界。

今天,我们激动地宣布 OpenAPI 类型生成器 的发布,它可以从您的 Elysia 代码生成 OpenAPI 文档,无需任何手动标注。

OpenAPI 类型生成器

我们梦想着一个世界,您只需编写代码,文档就能自动、准确地生成,完全无需任何手动标注。

与我们梦想最接近的是 Python 的 FastAPI,它可以从 pydantic 模型生成 OpenAPI 文档。但这仅限于 pydantic 模型,无法与其他库或类型一起使用。

Elysia 类型生成器为 TypeScript 带来了类似的体验,但没有那个限制。它允许您将 任何 TypeScript 类型 自动转换为 OpenAPI 文档,来自任何库,不仅限于 Elysia。

Elysia 类型生成器

Elysia 自动将请求体类型引用到响应模式中,列出了所有可能的响应状态码,完全无需任何手动模式标注。

它仅需 1 行 代码,即可直接从您的 TypeScript 类型 生成 OpenAPI 文档,完全无需任何标注。

这确实是开创性的

有史以来第一次,您现在可以真正地为您的 API 自动生成文档,无需任何手动标注。它开箱即用,适用于任何库。

它与现有的 Elysia 代码库和模式定义兼容,无需任何破坏性更改或像类型转换器(例如 Typia)这样的额外配置。

类型生成器与现有的模式定义共存,优先使用现有的模式定义,然后再回退到从类型进行推断。

在 Elysia 类型生成器中使用 Drizzle

从 Elysia 路由处理程序返回 Drizzle 查询将自动推断为 OpenAPI 模式。

它还兼容任何 TypeScript 库,即使是像 DrizzlePrisma 这样的现代库中的复杂类型,也能开箱即用。

类型健全性

OpenAPI 类型生成器还支持复杂场景,例如来自生命周期/宏的多个状态,它们相互重叠,并由多个响应状态码分隔。

每个状态码可以返回多个值,Elysia 会将其作为联合类型处理,涵盖该状态码下所有可能的响应。准确列出所有可能的返回值。

联合响应

自动从联合类型列出多个响应状态码。

这是意义深远的特性,其他任何框架都难以复制。

采用 OpenAPI 类型生成器

要将 OpenAPI 类型生成器添加到您的代码库,只需:

  1. 导出一个 Elysia 实例
  2. 提供根 Elysia 文件路径(如果未提供,Elysia 将使用 src/index.ts
ts
import { Elysia } from 'elysia'
import { openapi, fromTypes } from '@elysiajs/openapi'

export const app = new Elysia() 
	.use(
		openapi({
			references: fromTypes() 
		})
	)

Elysia 类型生成器将分析您的 Elysia 实例,并即时自动生成 OpenAPI 文档,无需构建步骤。

OpenAPI 类型生成器的文档可以在 模式:OpenAPI 中找到。


我们相信这个功能是 Elysia 真正独有的

虽然大多数 Web 框架需要花费大量精力和手动标注来创建 API 文档。

Elysia 可以为您编写 API 文档,没有任何其他框架能接近这种体验。

这之所以成为可能,完全得益于 Elysia 对端到端类型安全性的卓越支持

我们很期待看到它将如何帮助您使用 Elysia 以最少的努力创建和维护高质量的 API 文档。

您可以通过今天将 @elysiajs/openapi 更新到最新版来尝试它,或者从 GitHub 仓库 实验我们的示例设置。

Elysia: Ergonomic Framework for Humans