6 个版本
0.1.5 | 2021年3月21日 |
---|---|
0.1.4 | 2021年3月21日 |
#2456 in 网页编程
每月下载量 359
在 3 个Crate中使用(直接使用2个)
2MB
165 行
swagger-ui
swagger-ui 是一个用于在 Rust 网页服务器中渲染 OpenAPI 规范的 crate,使用 swagger-ui JS 库。
此 crate 在构建过程中从 npm 下载 swagger-ui-dist 并将其嵌入到您的二进制文件中,使用 rust-embed。
它还提供了对 rocket 的绑定。
使用方法
Rocket
使用此 crate 与 rocket 一起提供您的 OpenAPI 规范的 swagger-ui
。
在您的 Cargo.toml
中使用 rocket
功能
swagger-ui = { version = "0.1", features = ["rocket"] }
或者安装 rocket-swagger-ui
swagger-ui = "0.1"
rocket-swagger-ui = "0.1"
请参阅 rocket-swagger-ui/examples/basic.rs 以获取完整示例
#![feature(proc_macro_hygiene, decl_macro)]
extern crate rocket;
use rocket_swagger_ui;
use swagger_ui;
fn main() {
rocket::ignite()
.mount("/api/v1/swagger/",
rocket_swagger_ui::routes(
// Specify file with openapi specification,
// relative to current file
swagger_ui::swagger_spec_file!("./openapi.json"),
swagger_ui::Config { ..Default::default() }
)
)
.launch();
}
独立
此库没有网络服务器绑定并不是非常有用。您可以从 swagger-ui-dist
中获取文件并创建 swagger-ui
的配置,该配置可以通过 serde 序列化为 json。
请参阅 ../swagger-ui/examples/basic.rs 以获取完整示例
use swagger_ui::{Assets, Config, Spec, DefaultModelRendering, DocExpansion, Filter, swagger_spec_file};
fn main() {
println!("swagger-ui bundles files:");
// Use Assets::iter() to get iterator of all filenames
for file in Assets::iter() {
let filename = file.as_ref();
println!("\t{}", filename);
// `Assets::get(filename)` returns file content
};
// Load openapi spec (compile-time)
let _spec: Spec = swagger_spec_file!("./openapi.json");
// swagger-ui configuration struct
let _config: Config = Config {
url: "".to_string(),
urls: vec![],
deep_linking: false,
display_operation_id: false,
default_models_expand_depth: 0,
default_model_expand_depth: 0,
default_model_rendering: DefaultModelRendering::Example,
display_request_duration: false,
doc_expansion: DocExpansion::List,
filter: Filter::Bool(false),
max_displayed_tags: 0,
show_extensions: false,
show_common_extensions: false
};
}
依赖关系
~3–13MB
~122K SLoC