Expand description
This crate implements necessary bindings for automatically collecting paths
and schemas
recursively from Actix Web
App
, Scope
and ServiceConfig
. It provides natural API reducing duplication and support for scopes while generating
OpenAPI specification without the need to declare paths
and schemas
to #[openapi(...)]
attribute of OpenApi
derive.
Currently only service(...)
calls supports automatic collection of schemas and paths. Manual routes via route(...)
or
Route::new().to(...)
is not supported.
§Install
Add dependency declaration to Cargo.toml
.
[dependencies]
utoipa-actix-web = "0.1"
§Examples
Collect handlers annotated with #[utoipa::path]
recursively from service(...)
calls to compose OpenAPI spec.
use actix_web::web::Json;
use actix_web::{get, App};
use utoipa_actix_web::{scope, AppExt};
#[derive(utoipa::ToSchema, serde::Serialize)]
struct User {
id: i32,
}
#[utoipa::path(responses((status = OK, body = User)))]
#[get("/user")]
async fn get_user() -> Json<User> {
Json(User { id: 1 })
}
let (_, mut api) = App::new()
.into_utoipa_app()
.service(scope::scope("/api/v1").service(get_user))
.split_for_parts();
Re-exports§
pub use scope::scope;
Modules§
Structs§
- Wrapper type for
actix_web::App
andutoipa::openapi::OpenApi
.
Traits§
- Extends
actix_web::App
withutoipa
related functionality. - This trait is used to unify OpenAPI items collection from types implementing this trait.