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
.Redoc
via rocket
.Redoc
via axum
.Use Redoc only without any boiler plate implementation.
toml
[dependencies]
utoipa-redoc = "0.1"
Enable actix-web integration with Redoc.
toml
[dependencies]
utoipa-redoc = { version = "0.1", 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.
```rust
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 redochandler = move || async {
redoc.tohtml()
};
```
Utoipa-redoc enables full customizaton 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
evaluation.
$spec
Will be the Spec
that will be rendered via Redoc.$config
Will be the current Config
. By default this is EmptyConfig
.Overiding the HTML template with a custom one.
rust
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.
rust
Redoc::with_config(ApiDoc::openapi(), || json!({ "disableSearch": true }));
Using FileConfig
.
rust
Redoc::with_config(ApiDoc::openapi(), FileConfig);
Read more details in Config
.
Serve Redoc
via actix-web
framework.
```rust
use actixweb::App;
use utoiparedoc::{Redoc, Servable};
App::new().service(Redoc::with_url("/redoc", ApiDoc::openapi())); ```
Serve Redoc
via rocket
framework.
```rust
use utoipa_redoc::{Redoc, Servable};
rocket::build() .mount( "/", Redoc::with_url("/redoc", ApiDoc::openapi()), ); ```
Serve Redoc
via axum
framework.
```rust
use axum::{Router, body::HttpBody};
use utoipa_redoc::{Redoc, Servable};
let app = Router::::new()
.merge(Redoc::with_url("/redoc", ApiDoc::openapi()));
```
Use Redoc
to serve OpenAPI spec from url.
rust
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.
rust
Redoc::new(json!({"openapi": "3.1.0"}));