| Crates.io | utoipa-swagger-ui |
| lib.rs | utoipa-swagger-ui |
| version | 9.0.2 |
| created_at | 2022-03-07 19:53:00.926048+00 |
| updated_at | 2025-05-25 17:04:44.516422+00 |
| description | Swagger UI for utoipa |
| homepage | |
| repository | https://github.com/juhaku/utoipa |
| max_upload_size | |
| id | 545168 |
| size | 216,421 |
This crate implements necessary boilerplate code to serve Swagger UI via web server. It works as a bridge for serving the OpenAPI documentation created with utoipa library in the Swagger UI.
Currently implemented boilerplate for:
version >= 4version >=0.5version >=0.7Serving Swagger UI is framework independent thus this crate also supports serving the Swagger UI with other frameworks as well. With other frameworks, there is a bit more manual implementation to be done. See more details at serve or examples.
actix-web Enables actix-web integration with pre-configured SwaggerUI service factory allowing
users to use the Swagger UI without a hassle.rocket Enables rocket integration with pre-configured routes for serving the Swagger UI
and api doc without a hassle.axum Enables axum integration with pre-configured Router serving Swagger UI and OpenAPI specs
hassle free.debug-embed Enables debug-embed feature on rust_embed crate to allow embedding files in debug
builds as well.reqwest Use reqwest for downloading Swagger UI according to the SWAGGER_UI_DOWNLOAD_URL environment
variable. This is only enabled by default on Windows.url Enabled by default for parsing and encoding the download URL.vendored Enables vendored Swagger UI via utoipa-swagger-ui-vendored crate.cache Enables caching of the Swagger UI download in utoipa-swagger-ui during the build process.debug: Implement debug trait for SwaggerUi and other types.Use only the raw types without any boilerplate implementation.
[dependencies]
utoipa-swagger-ui = "9"
Enable actix-web framework with Swagger UI you could define the dependency as follows.
[dependencies]
utoipa-swagger-ui = { version = "9", features = ["actix-web"] }
Note! Also remember that you already have defined utoipa dependency in your Cargo.toml
[!IMPORTANT]
utoipa-swagger-uicrate will by default try to use systemcurlpackage for downloading the Swagger UI. It can optionally be downloaded withreqwestby enablingreqwestfeature. Reqwest can be useful for platform independent builds however bringing quite a few unnecessary dependencies just to download a file. If theSWAGGER_UI_DOWNLOAD_URLis a file path then no downloading will happen.
[!TIP] Use
vendoredfeature flag to use vendored Swagger UI. This is especially useful for no network environments.
The following configuration env variables are available at build time:
SWAGGER_UI_DOWNLOAD_URL: Defines the url from where to download the swagger-ui zip file.
SWAGGER_UI_OVERWRITE_FOLDER: Defines an optional absolute path to a directory containing files
to overwrite the Swagger UI files. Typically you might want to overwrite index.html.
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-docs/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-docs/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")
.url("/api-docs/openapi.json", ApiDoc::openapi()));
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.