Skip to content
我们的赞助商
博客

为 Elysia 引入 OpenAPI Type Gen

OpenAPI Type Gen:Elysia 的自动 API 文档

API 文档在 API 开发中扮演着关键角色。

与团队、供应商或第三方服务接触时,通常需要一份文档齐全的 API 来确保顺利集成和协作。

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

但 Elysia 认真对待 OpenAPI

我们相信 API 文档应该轻松且自动,让开发者能够专注于构建优秀的 API,而无需担心文档问题。

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

  • 我们确保 schema 可以用于数据验证、类型推断和 OpenAPI 注解,所有这些都来自单一真相来源。
  • 我们提供与 Scalar 无缝的文档体验,仅需一行代码和 OpenAPI 插件。
  • 我们处理与标准 Schema(Zod、Valibot 等)的集成,并在可能时将其转换为 OpenAPI 文档。
  • 我们有一个一行的 OpenAPI 插件,可以添加一个美丽的 UI 使用 Scalar 与您的 API 交互。

Scalar Preview

Elysia 使用 Elysia OpenAPI 插件的 Scalar UI 运行,仅需一行代码

但即使已经是出色的体验,我们仍想进一步推动它。

今天,我们很高兴地宣布发布 OpenAPI Type Gen,它可以从您的 Elysia 代码生成 OpenAPI 文档,而无需任何手动注解。

OpenAPI Type Gen

我们梦想着一个世界,您只需编写代码,文档就会自动创建,而且准确无误,完全无需手动注解。

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

Elysia Type Gen 为 TypeScript 带来了类似体验,但没有这些限制。它允许您将 任何 TypeScript 类型 自动转换为 OpenAPI 文档,来自任何库,不限于 Elysia。

Elysia Type Gen

Elysia 自动将 body 类型引用到响应 schema 中,列出所有可能的响应状态码,而无需任何手动 schema 注解。

只需 一行 代码,就可以直接 从 TypeScript 类型 生成来自您的 Elysia 代码的 OpenAPI 文档,完全无需注解。

这真是开创性的

有史以来第一次,您现在可以真正自动文档化您的 API,而无需任何手动注解。它开箱即用,与任何库兼容。

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

Type Gen 与现有 schema 定义共存,优先使用现有 schema 定义,然后回退到从类型推断。

Using Drizzle with type gen Elysia Type Gen

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

它还与任何 TypeScript 库兼容,即使是来自现代库如 DrizzlePrisma 的复杂类型,也开箱即用。

类型健全性

OpenAPI Type Gen 还支持复杂场景,如来自生命周期/宏的多个状态相互重叠,由多个响应状态码分隔。

每个状态码可以返回多个值,这将被 Elysia 处理为相同状态码下的每个可能响应的联合类型。准确列出所有可能的返回值。

Union response

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

这是一个深刻的东西,几乎无法被任何其他框架复制。

采用 OpenAPI Type Gen

要将 OpenAPI Type Gen 添加到您的代码库,只需:

  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 Type Gen 将分析您的 Elysia 实例,并在运行时自动生成 OpenAPI 文档,无需构建步骤。

OpenAPI Type Gen 的文档可以在 Patterns: OpenAPI 中找到。


我们相信这个功能是 Elysia 真正的独特之处

虽然大多数 Web 框架需要大量努力和手动注解来创建 API 文档。

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

这仅得益于 Elysia 出色的端到端类型安全性支持

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

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

Elysia:人性化框架