#openapi #deserialize #specification #serde #serde-json #structures #v3

openapiv3

此crate提供表示OpenAPI v3.0.x规范的数据结构,易于使用serde进行反序列化

23个版本 (5个稳定版本)

2.0.0 2023年12月8日
2.0.0-rc.12023年10月21日
1.0.4 2023年12月13日
1.0.3 2023年8月28日
0.1.3 2019年3月5日

编码类别中排名第45

Download history 18821/week @ 2024-04-22 17967/week @ 2024-04-29 18663/week @ 2024-05-06 22386/week @ 2024-05-13 17667/week @ 2024-05-20 17167/week @ 2024-05-27 15257/week @ 2024-06-03 17471/week @ 2024-06-10 19172/week @ 2024-06-17 17188/week @ 2024-06-24 14131/week @ 2024-07-01 18582/week @ 2024-07-08 17179/week @ 2024-07-15 21405/week @ 2024-07-22 16705/week @ 2024-07-29 20539/week @ 2024-08-05

每月下载量76,335
73个crate中使用(直接使用42个)

MIT/Apache

375KB
2K SLoC

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).expect("Could not deserialize input");
    println!("{:?}", openapi);
}

目标

  • 提供对规范的反序列化,它能够干净地映射到Rust枚举等。

非目标

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

问题

没有类型的模式最终将作为任何数据类型,根据规范可以有任何参数的任何模式类型。一些Open API文档没有包含类型参数,尝试推导类型会很好,但截至现在,这个crate满足了我的需求。

类似crate

许可证

此crate许可在以下两者之间

Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

贡献

除非您明确声明,否则您提交给此crate的任何有意贡献,根据Apache-2.0许可证定义,将根据上述条款双许可,而无需任何附加条款或条件。

依赖关系

~1.4–2.5MB
~49K SLoC