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 编程
每月 653 次下载
在 11 个 Crates 中使用 (8 个直接使用)
385KB
3K SLoC
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