utoipa-actix-web

Crates.ioutoipa-actix-web
lib.rsutoipa-actix-web
version0.1.2
sourcesrc
created_at2024-10-23 12:48:55.000783
updated_at2024-11-08 12:18:43.852913
descriptionUtoipa's actix-web bindings for seamless integration of the two
homepage
repositoryhttps://github.com/juhaku/utoipa
max_upload_size
id1420039
size47,570
Juha Kukkonen (juhaku)

documentation

README

utoipa-actix-web - Bindings for Actix Web and utoipa

Utoipa build crates.io docs.rs rustc

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::{get, App};
use utoipa_actix_web::{scope, AppExt};

#[derive(utoipa::ToSchema)]
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();

License

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.

Commit count: 766

cargo fmt