43 个版本

0.13.4 2024 年 4 月 14 日
0.13.3 2024 年 3 月 6 日
0.13.2 2024 年 1 月 22 日
0.13.1 2023 年 12 月 18 日
0.1.5 2020 年 10 月 16 日

#115 in Rust 模式

Download history 6708/week @ 2024-04-28 6634/week @ 2024-05-05 7941/week @ 2024-05-12 8086/week @ 2024-05-19 9001/week @ 2024-05-26 9682/week @ 2024-06-02 9695/week @ 2024-06-09 11422/week @ 2024-06-16 12628/week @ 2024-06-23 11772/week @ 2024-06-30 12816/week @ 2024-07-07 13248/week @ 2024-07-14 13071/week @ 2024-07-21 11645/week @ 2024-07-28 13314/week @ 2024-08-04 10985/week @ 2024-08-11

49,532 每月下载量
用于 14 crates

MIT/Apache

3.5MB
6.5K SLoC

Rust 5K SLoC // 0.0% comments JavaScript 1.5K SLoC // 0.0% comments

Aide

Aide 是一个代码优先的 API 文档和实用工具库。


lib.rs:

Aide

aide 是一个以代码为中心的 Open API 文档生成库。它旨在与框架紧密集成并遵循其约定,而在不需要时尽量保持简单。

目标是最大限度地减少学习曲线、心理上下文切换,并使文档变得稍微不那么枯燥。

请参阅 示例 了解 Aide 如何与各种框架一起使用。

目前仅支持 Open API 版本 3.1.0

以前的 aide 版本严重依赖于宏,并依赖于 linkme crate 来自动处理全局状态。虽然一切正常,但宏难以理解,rustfmt 无法与它们一起使用,代码补全也时好时坏。

0.5.0 中,aide 被重写,它基于传统的函数、类型推断以及基于构建器模式的声明式 API。

现在所有文档都可以在源代码中追踪[^1],不再有宏和全局魔法。[^2]

[^1]: 以及使用 [追踪] 范围

[^2]: 对于某些设置和共享状态,仍然使用线程局部上下文。

基于类型的生成

该库使用 schemars 为类型生成模式。对于基于 JSON 的 API,只需将 JsonSchema 与 [serde]'s Serialize/Deserialize 一起使用即可。

此外,使用 OperationInputOperationOutput trait 在框架中用于提取器和响应类型,以自动生成预期的 HTTP 参数和响应文档。

例如,一个Json<T>提取器,如果实现了JsonSchema,将生成一个具有T模式的application/json请求体。

声明式文档

所有手动文档都基于可组合的transform函数和类似构建器模式的API。

支持的框架

  • axum: aide::axum
  • actix-web由于缺乏开发资源目前不支持,但未来可能会再次支持。如果您使用actix-web,您还可以暂时使用基于宏的0.4.*版本的库。

错误

代码生成过程中可能会发生一些错误,这些错误通常可以安全忽略,但可能表明存在bug。

默认情况下,错误不会采取任何操作,为了处理错误,可以通过在线程局部上下文中注册错误处理程序来处理,使用aide::gen::on_error

为了防止静默吞咽潜在的错误,错误被选择记录,这可能会在没有足够上下文信息来确定错误是否实际上是错误的情况下发生。请注意,没有过滤器简单地对所有错误进行恐慌是不建议的,尤其是在生产环境中。

功能标志

默认情况下没有启用任何功能。

  • macros:额外的辅助宏

第三方特质实现

  • bytes
  • http
  • serde_qs(当与axum一起使用时)

axum集成

axum及其功能门

  • axum
  • axum-ws
  • axum-multipart
  • axum-headers

axum-extra及其功能门

  • axum-extra
  • axum-extra-cookie
  • axum-extra-cookie-private
  • axum-extra-form
  • axum-extra-query

MSRV

该库将始终支持最新的稳定Rust版本,它可能支持旧版本,但不提供保证。

依赖关系

~2–17MB
~244K SLoC