You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
revol-xut fe77bce945
fuck fuck fuck fuck fuck
2 months ago
res adding the repo for debugging 2 months ago
src adding the repo for debugging 2 months ago
.gitignore printing path it wants to create 2 months ago
Cargo.lock fuck fuck fuck 2 months ago
Cargo.toml bumped version 2 months ago
LICENSE-APACHE adding the repo for debugging 2 months ago
LICENSE-MIT adding the repo for debugging 2 months ago
README.md adding the repo for debugging 2 months ago
build.rs fuck fuck fuck fuck fuck 2 months ago

README.md

utoipa-swagger-ui

Utoipa build crates.io docs.rs rustc

This crate implements necessary boiler plate code to serve Swagger UI via web server. It works as a bridge for serving the OpenAPI documetation created with utoipa libarary in the Swagger UI.

Currently implemented boiler plate for:

  • actix-web version >= 4
  • rocket version >=0.5.0-rc.1
  • axum version >=0.5

Serving Swagger UI is framework independant thus this crate also supports serving the Swagger UI with other frameworks as well. With other frameworks there is bit more manual implementation to be done. See more details at serve or examples.

Features

  • actix-web Enables actix-web integration with pre-configured SwaggerUI service factory allowing users to use the Swagger UI without a hazzle.
  • rocket Enables rocket integration with with pre-configured routes for serving the Swagger UI and api doc without a hazzle.
  • axum Enables axum integration with pre-configured Router serving Swagger UI and OpenAPI specs hazzle free.
  • debug-embed Enables debug-embed feature on rust_embed crate to allow embedding files in debug builds as well.

Install

Use only the raw types without any boiler plate implementation.

[dependencies]
utoipa-swagger-ui = "2"

Enable actix-web framework with Swagger UI you could define the dependency as follows.

[dependencies]
utoipa-swagger-ui = { version = "2", features = ["actix-web"] }

Note! Also remember that you already have defined utoipa dependency in your Cargo.toml

Examples

Serve Swagger UI with api doc via actix-web. See full example from examples.

HttpServer::new(move || {
    App::new()
        .service(
            SwaggerUi::new("/swagger-ui/{_:.*}")
                .url("/api-doc/openapi.json", ApiDoc::openapi()),
        )
  })
  .bind((Ipv4Addr::UNSPECIFIED, 8989)).unwrap()
  .run();

Serve Swagger UI with api doc via rocket. See full example from examples.

#[rocket::launch]
fn rocket() -> Rocket<Build> {
    rocket::build()
        .mount(
            "/",
            SwaggerUi::new("/swagger-ui/<_..>")
                .url("/api-doc/openapi.json", ApiDoc::openapi()),
        )
}

Setup Router to serve Swagger UI with axum framework. See full implementation of how to serve Swagger UI with axum from examples.

let app = Router::new()
    .merge(SwaggerUi::new("/swagger-ui/*tail")
        .url("/api-doc/openapi.json", ApiDoc::openapi()));

License

Licensed under either of Apache 2.0 or MIT license at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, shall be dual licensed, without any additional terms or conditions.