#swagger-ui #axum #open-api #routes #dist #router #js-css

swagger-ui-dist

以axum路由形式打包swagger-ui的JS/CSS代码

4个稳定版本

5.17.14 2024年5月28日
5.17.13 2024年5月27日
5.17.12 2024年5月21日
5.17.10 2024年5月19日

#2 in #dist

Download history 388/week @ 2024-05-18 479/week @ 2024-05-25 44/week @ 2024-06-01 130/week @ 2024-06-08 7/week @ 2024-06-15 12/week @ 2024-06-22 58/week @ 2024-06-29 83/week @ 2024-07-06 48/week @ 2024-07-13 178/week @ 2024-07-20 75/week @ 2024-07-27 76/week @ 2024-08-03

384 每月下载量

Apache-2.0

4MB
122

Latest Version

版本号反映嵌入的swagger-ui版本。

用法

使用内联OpenAPI

use axum::Router;
use swagger_ui_dist::{ApiDefinition, OpenApiSource};

#[tokio::main]
async fn main() {
    let api_def = ApiDefinition {
        uri_prefix: "/api",
        api_definition: OpenApiSource::Inline(include_str!("petstore.yaml")),
        title: Some("My Super Duper API"),
    };
    let app = Router::new().merge(swagger_ui_dist::generate_routes(api_def));
    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    println!("listening on https://127.0.0.1:3000/api");
    axum::serve(listener, app).await.unwrap();
}

使用外部路由

use axum::{routing::get, Router};
use swagger_ui_dist::{ApiDefinition, OpenApiSource};

#[tokio::main]
async fn main() {
    let api_def = ApiDefinition {
        uri_prefix: "/api",
        api_definition: OpenApiSource::Uri("/openapi.yml"),
        title: Some("My Super Duper API"),
    };
    let app = Router::new()
        .route("/openapi.yml", get(|| async move { include_str!("petstore.yaml") }))
        .merge(swagger_ui_dist::generate_routes(api_def));
    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    println!("listening on https://127.0.0.1:3000/api");
    axum::serve(listener, app).await.unwrap();
}

依赖项

~5–7MB
~124K SLoC