Expand description
This crate works as a bridge between utoipa and Scalar OpenAPI visualizer.
Utoipa-scalar 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.
§Crate Features
- actix-web Allows serving
Scalarviaactix-web. - rocket Allows serving
Scalarviarocket. - axum Allows serving
Scalarviaaxum.
§Install
Use Scalar only without any boiler plate implementation.
[dependencies]
utoipa-scalar = "0.3"Enable actix-web integration with Scalar.
[dependencies]
utoipa-scalar = { version = "0.3", features = ["actix-web"] }§Using standalone
Utoipa-scalar can be used standalone as simply as creating a new Scalar instance and then
serving it by what ever means available as text/html from http handler in your favourite web
framework.
Scalar::to_html method can be used to convert the Scalar instance to a servable html
file.
let scalar = Scalar::new(ApiDoc::openapi());
// Then somewhere in your application that handles http operation.
// Make sure you return correct content type `text/html`.
let scalar_handler = move || {
scalar.to_html()
};§Customization
Scalar supports customization via Scalar::custom_html method which allows overriding the
default HTML template with customized one.
See more about configuration options.
The HTML template must contain $spec variable which will be overridden during
Scalar::to_html execution.
Overriding the HTML template with a custom one.
let html = "...";
Scalar::new(ApiDoc::openapi()).custom_html(html);§Examples
Serve Scalar via actix-web framework.
use actix_web::App;
use utoipa_scalar::{Scalar, Servable};
App::new().service(Scalar::with_url("/scalar", ApiDoc::openapi()));Serve Scalar via rocket framework.
use utoipa_scalar::{Scalar, Servable};
rocket::build()
.mount(
"/",
Scalar::with_url("/scalar", ApiDoc::openapi()),
);Serve Scalar via axum framework.
use axum::Router;
use utoipa_scalar::{Scalar, Servable};
let app = Router::<S>::new()
.merge(Scalar::with_url("/scalar", ApiDoc::openapi()));Use Scalar to serve custom OpenAPI spec using serde’s json!() macro.
Scalar::new(json!({"openapi": "3.1.0"}));