Struct utoipa_swagger_ui::SwaggerUi
source · #[non_exhaustive]pub struct SwaggerUi { /* private fields */ }
actix-web
or rocket
or axum
only.Expand description
Entry point for serving Swagger UI and api docs in application. It provides builder style chainable configuration methods for configuring api doc urls.
Examples
Create new SwaggerUi
with defaults.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", ApiDoc::openapi());
Create a new SwaggerUi
with custom Config
and oauth::Config
.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", ApiDoc::openapi())
.config(Config::default().try_it_out_enabled(true).filter(true))
.oauth(oauth::Config::new());
Implementations§
source§impl SwaggerUi
impl SwaggerUi
sourcepub fn new<P: Into<Cow<'static, str>>>(path: P) -> Self
pub fn new<P: Into<Cow<'static, str>>>(path: P) -> Self
Create a new SwaggerUi
for given path.
Path argument will expose the Swagger UI to the user and should be something that the underlying application framework / library supports.
Examples
Exposes Swagger UI using path /swagger-ui
using actix-web supported syntax.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}");
sourcepub fn url<U: Into<Url<'static>>>(self, url: U, openapi: OpenApi) -> Self
pub fn url<U: Into<Url<'static>>>(self, url: U, openapi: OpenApi) -> Self
Add api doc Url
into SwaggerUi
.
Method takes two arguments where first one is path which exposes the OpenApi
to the user.
Second argument is the actual Rust implementation of the OpenAPI doc which is being exposed.
Calling this again will add another url to the Swagger UI.
Examples
Expose manually created OpenAPI doc.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", utoipa::openapi::OpenApi::new(
utoipa::openapi::Info::new("my application", "0.1.0"),
utoipa::openapi::Paths::new(),
));
Expose derived OpenAPI doc.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", ApiDoc::openapi());
sourcepub fn urls(self, urls: Vec<(Url<'static>, OpenApi)>) -> Self
pub fn urls(self, urls: Vec<(Url<'static>, OpenApi)>) -> Self
Add multiple Url
s to Swagger UI.
Takes one Vec
argument containing tuples of Url
and OpenApi
.
Situations where this comes handy is when there is a need or wish to separate different parts of the api to separate api docs.
Examples
Expose multiple api docs via Swagger UI.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.urls(
vec![
(Url::with_primary("api doc 1", "/api-docs/openapi.json", true), ApiDoc::openapi()),
(Url::new("api doc 2", "/api-docs/openapi2.json"), ApiDoc2::openapi())
]
);
sourcepub fn external_url_unchecked<U: Into<Url<'static>>>(
self,
url: U,
openapi: Value
) -> Self
pub fn external_url_unchecked<U: Into<Url<'static>>>( self, url: U, openapi: Value ) -> Self
Add external API doc to the SwaggerUi
.
This operation is unchecked and so it does not check any validity of provided content. Users are required to do their own check if any regarding validity of the external OpenAPI document.
Method accepts two arguments, one is Url
the API doc is served at and the second one is
the serde_json::Value
of the OpenAPI doc to be served.
Examples
Add external API doc to the SwaggerUi
.
let external_openapi = json!({"openapi": "3.0.0"});
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.external_url_unchecked("/api-docs/openapi.json", external_openapi);
sourcepub fn external_urls_from_iter_unchecked<I: IntoIterator<Item = (U, Value)>, U: Into<Url<'static>>>(
self,
external_urls: I
) -> Self
pub fn external_urls_from_iter_unchecked<I: IntoIterator<Item = (U, Value)>, U: Into<Url<'static>>>( self, external_urls: I ) -> Self
Add external API docs to the SwaggerUi
from iterator.
This operation is unchecked and so it does not check any validity of provided content. Users are required to do their own check if any regarding validity of the external OpenAPI documents.
Method accepts one argument, an iter
of Url
and serde_json::Value
tuples. The
Url
will point to location the OpenAPI document is served and the serde_json::Value
is the OpenAPI document to be served.
Examples
Add external API docs to the SwaggerUi
.
let external_openapi = json!({"openapi": "3.0.0"});
let external_openapi2 = json!({"openapi": "3.0.0"});
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.external_urls_from_iter_unchecked([
("/api-docs/openapi.json", external_openapi),
("/api-docs/openapi2.json", external_openapi2)
]);
sourcepub fn oauth(self, oauth: Config) -> Self
pub fn oauth(self, oauth: Config) -> Self
Add oauth oauth::Config
into SwaggerUi
.
Method takes one argument which exposes the oauth::Config
to the user.
Examples
Enable pkce with default client_id.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", ApiDoc::openapi())
.oauth(oauth::Config::new()
.client_id("client-id")
.scopes(vec![String::from("openid")])
.use_pkce_with_authorization_code_grant(true)
);
sourcepub fn config(self, config: Config<'static>) -> Self
pub fn config(self, config: Config<'static>) -> Self
Add custom Config
into SwaggerUi
which gives users more granular control over
Swagger UI options.
Methods takes one Config
argument which exposes Swagger UI’s configurable options
to the users.
Examples
Create a new SwaggerUi
with custom configuration.
let swagger = SwaggerUi::new("/swagger-ui/{_:.*}")
.url("/api-docs/openapi.json", ApiDoc::openapi())
.config(Config::default().try_it_out_enabled(true).filter(true));
Trait Implementations§
source§impl HttpServiceFactory for SwaggerUi
impl HttpServiceFactory for SwaggerUi
fn register(self, config: &mut AppService)
Auto Trait Implementations§
impl RefUnwindSafe for SwaggerUi
impl Send for SwaggerUi
impl Sync for SwaggerUi
impl Unpin for SwaggerUi
impl UnwindSafe for SwaggerUi
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
§fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
self
into a collection.fn mapped<U, F, A>(self, f: F) -> SmallVec<A>where
F: FnMut(T) -> U,
A: Array<Item = U>,
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);