6 个版本

0.1.5 2021年3月21日
0.1.4 2021年3月21日

#2456 in 网页编程

Download history 42/week @ 2024-03-11 53/week @ 2024-03-18 68/week @ 2024-03-25 165/week @ 2024-04-01 107/week @ 2024-04-08 40/week @ 2024-04-15 66/week @ 2024-04-22 83/week @ 2024-04-29 72/week @ 2024-05-06 53/week @ 2024-05-13 49/week @ 2024-05-20 130/week @ 2024-05-27 69/week @ 2024-06-03 130/week @ 2024-06-10 83/week @ 2024-06-17 56/week @ 2024-06-24

每月下载量 359
3 个Crate中使用(直接使用2个)

MIT 许可协议

2MB
165

swagger-ui

swagger-ui 是一个用于在 Rust 网页服务器中渲染 OpenAPI 规范的 crate,使用 swagger-ui JS 库

此 crate 在构建过程中从 npm 下载 swagger-ui-dist 并将其嵌入到您的二进制文件中,使用 rust-embed

它还提供了对 rocket 的绑定。

swagger-ui petstore

使用方法

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