4 个版本
0.2.0 | 2019年2月6日 |
---|---|
0.1.2 | 2019年1月28日 |
0.1.1 | 2019年1月28日 |
0.1.0 | 2019年1月28日 |
#1961 在 编码
8KB
65 行
涂鸦
待定
lib.rs
:
涂鸦
《涂鸦》库提供了一种让数据结构按照 OpenAPI 规范 进行自我文档化的方法
实现了 Schema
特性的类型可以使用可用的方法来自我文档化。有关更多信息,请参阅 Schema
特性
该包还重新导出 doodle_derive
,它提供了一个 derive Schema
,该 derive 实现了序列化数据结构所需的方法
使用示例
Cargo.toml:
[dependencies]
serde_json = "1.0.0"
doodle = { version = "0.1.1", features = ["derive"] }
use doodle::*;
use serde_json::json;
#[derive(Schema)]
struct Woods {
pub id: i32,
pub epic: Vec<Vec<Tale>>,
}
#[derive(Schema)]
struct Tale {
pub value: Option<String>,
}
// Initialize an empty dict
let mut schema = json! {{}};
let map = schema.as_object_mut().unwrap();
// Append our schemas
Woods::append_to_schema(map);
Tale::append_to_schema(map);
// print the output
let output = serde_json::to_string_pretty(&schema).unwrap();
println!("Schema:\n\n{}", output);
////////////////////// Test the example //////////////////////
let expected = json! {{
"Tale": {
"properties": {
"value": {
"type": "string",
"nullable": true
}
},
"type": "object"
},
"Woods": {
"properties": {
"epic": {
"items": {
"items": {
"$ref": "#/components/schemas/Tale"
},
"type": "array"
},
"type": "array"
},
"id": {
"type": "number"
}
},
"type": "object"
}
}};
assert_eq!(expected, schema);
依赖项
~355–770KB
~17K SLoC