#openapi #openapi-v3 #v3

openapiv3-extended

此 crate 提供了表示 OpenAPI v3.0.x 规范的数据结构,可以轻松地使用 serde 进行反序列化

35 个稳定版本 (5 个主要版本)

6.0.0 2024 年 2 月 12 日
5.1.1 2024 年 1 月 9 日
4.0.5 2024 年 1 月 1 日
4.0.4 2023 年 12 月 26 日
1.0.4 2022 年 6 月 13 日

#153 in Web 编程

Download history 56/week @ 2024-03-13 48/week @ 2024-03-20 73/week @ 2024-03-27 130/week @ 2024-04-03 38/week @ 2024-04-10 179/week @ 2024-04-17 159/week @ 2024-04-24 75/week @ 2024-05-01 57/week @ 2024-05-08 71/week @ 2024-05-15 121/week @ 2024-05-22 85/week @ 2024-05-29 128/week @ 2024-06-05 87/week @ 2024-06-12 226/week @ 2024-06-19 205/week @ 2024-06-26

每月 653 次下载
11 个 Crates 中使用 (8 个直接使用)

MIT/Apache

385KB
3K SLoC

Crate | Github

OpenAPI v3 Extended

一个用于反/序列化 OpenAPI 规范的库。它提供

  • 创建、修改和合并规范的高级方法
  • 简单的 API,优先考虑可用性而不牺牲正确性
  • 支持 v2.0 和 v3.0 规范。 (目前不支持 v3.1,也不是在积极开发中。欢迎提交 PR。)

安装

[dependencies]
openapiv3-extended = ".."

请注意,库的名称为 openapiv3,并作为 use openapiv3; 导入,尽管包名为 openapiv3-extended

OpenAPI v3 示例工作流程

此 crate 提供了表示 OpenAPI v3.0.x 规范 的数据结构。请注意,这目前不包括 OpenAPI v3.1(尚不支持),这是一个不兼容的更改。

用法

以下是一个基本示例

use serde_json;
use openapiv3::OpenAPI;

fn main() {
    let data = include_str!("openapi.json");
    let openapi: OpenAPI = serde_json::from_str(data).unwrap();
    println!("{:?}", openapi);
}

您可以使用此 crate 将 Swagger 2.0 规范升级到 OpenAPI 3.0.x。要支持 v2,请启用 v2 功能。

// [dependencies]
// openapiv3-extended = { version = "..", features = ["v2"] }
use openapiv3::VersionedOpenAPI;

fn main() {
    let data = include_str!("swagger.json");
    let openapi: VersionedOpenAPI = serde_json::from_str(data).unwrap();
    println!("{:?}", openapi);
    let openapi: OpenAPI = openapi.upgrade(); // version 3.0
    println!("{:?}", openapi);
}

致谢

这个库最初是 https://github.com/glademiller/openapiv3 的分支。这两个库都支持 OpenAPI v3.0 规范的完整反/序列化。此分支提供

  • 许多创建、修改和合并规范的高级方法
  • 支持 OpenAPI v2.0,并将 v2.0 规范升级到 v3.0
  • 简化了 API,我们旨在优先考虑可用性而不牺牲正确性

目标

  • 提供对规范的反序列化,该序列化与 Rust 枚举等映射得很好。

非目标

  • 反序列化和随后的重新序列化是 100% 相同的。
    • 在序列化时可能会显示一些默认值,这些值可能不存在于输入中。

问题

没有类型的模式将按照规范成为任何数据类型,并可以具有任何模式类型的任何参数。一些 Open API 文档没有包含类型参数,很希望能够尝试推导类型,但截至现在,此 crate 满足了我的需求。

依赖项

~2–3MB
~58K SLoC