| Crates.io | utoipa-redoc |
| lib.rs | utoipa-redoc |
| version | 6.0.0 |
| created_at | 2023-08-06 15:01:09.196858+00 |
| updated_at | 2025-01-16 09:40:38.868372+00 |
| description | Redoc for utoipa |
| homepage | |
| repository | https://github.com/juhaku/utoipa |
| max_upload_size | |
| id | 937211 |
| size | 41,521 |
This crate works as a bridge between utoipa and Redoc OpenAPI visualizer.
Utoipa-redoc provides simple mechanism to transform OpenAPI spec resource to a servable HTML file which can be served via predefined framework integration or used standalone and served manually.
You may find fullsize examples from utoipa's Github repository.
Redoc via actix-web. version >= 4Redoc via rocket. version >=0.5Redoc via axum. version >=0.7Use Redoc only without any boiler plate implementation.
[dependencies]
utoipa-redoc = "6"
Enable actix-web integration with Redoc.
[dependencies]
utoipa-redoc = { version = "6", features = ["actix-web"] }
Utoipa-redoc can be used standalone as simply as creating a new Redoc instance and then
serving it by what ever means available as text/html from http handler in your favourite web
framework.
Redoc::to_html method can be used to convert the Redoc instance to a servable html
file.
let redoc = Redoc::new(ApiDoc::openapi());
// Then somewhere in your application that handles http operation.
// Make sure you return correct content type `text/html`.
let redoc_handler = move || async {
redoc.to_html()
};
Utoipa-redoc enables full customization support for Redoc according to what can be customized by modifying the HTML template and configuration options.
The default HTML template can be fully overridden to ones liking with
Redoc::custom_html method. The HTML template must contain $spec and $config
variables which are replaced during Redoc::to_html execution.
$spec Will be the Spec that will be rendered via Redoc.$config Will be the current Config. By default this is EmptyConfig.Overriding the HTML template with a custom one.
let html = "...";
Redoc::new(ApiDoc::openapi()).custom_html(html);
Redoc can be configured with JSON either inlined with the Redoc declaration or loaded from
user defined file with FileConfig.
Inlining the configuration.
Redoc::with_config(ApiDoc::openapi(), || json!({ "disableSearch": true }));
Using FileConfig.
Redoc::with_config(ApiDoc::openapi(), FileConfig);
Read more details in Config.
Serve Redoc via actix-web framework.
use actix_web::App;
use utoipa_redoc::{Redoc, Servable};
App::new().service(Redoc::with_url("/redoc", ApiDoc::openapi()));
Serve Redoc via rocket framework.
use utoipa_redoc::{Redoc, Servable};
rocket::build()
.mount(
"/",
Redoc::with_url("/redoc", ApiDoc::openapi()),
);
Serve Redoc via axum framework.
use axum::Router;
use utoipa_redoc::{Redoc, Servable};
let app = Router::<S>::new()
.merge(Redoc::with_url("/redoc", ApiDoc::openapi()));
Use Redoc to serve OpenAPI spec from url.
Redoc::new(
"https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml")
Use Redoc to serve custom OpenAPI spec using serde's json!() macro.
Redoc::new(json!({"openapi": "3.1.0"}));
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.