Files
axum-valid/README.md
2023-08-04 22:45:34 +08:00

4.5 KiB

axum-valid

crates.io LICENSE dependency status GitHub Workflow Status Coverage Status

This crate provides a Valid type that can be used in combination with Json, Path, Query, and Form types to validate the entities that implement the Validate trait from the validator crate.

Additional extractors like TypedHeader, MsgPack, Yaml etc. are supported through optional features.

Usage

cargo add axum-valid
use validator::Validate;
use serde::Deserialize;
use axum_valid::Valid;
use axum::extract::Query;
use axum::Json;

#[derive(Debug, Validate, Deserialize)]
pub struct Pager {
    #[validate(range(min = 1, max = 50))]
    pub page_size: usize,
    #[validate(range(min = 1))]
    pub page_no: usize,
}

pub async fn get_page_by_query(
    Valid(Query(pager)): Valid<Query<Pager>>,
) {
    assert!((1..=50).contains(&pager.page_size));
    assert!((1..).contains(&pager.page_no));
}

pub async fn get_page_by_json(
    Valid(Json(pager)): Valid<Json<Pager>>,
) {
    assert!((1..=50).contains(&pager.page_size));
    assert!((1..).contains(&pager.page_no));
}

When validation errors occur, the extractor will automatically return 400 with validation errors as the HTTP message body.

Features

Feature Description Default Tests
default Enables support for Path, Query, Json and Form
json Enables support for Json
query Enables support for Query
form Enables support for Form
typed_header Enables support for TypedHeader
msgpack Enables support for MsgPack and MsgPackRaw from axum-msgpack
yaml Enables support for Yaml from axum-yaml
extra Enables support for Cached, WithRejection from axum-extra
extra_query Enables support for Query from axum-extra
extra_form Enables support for Form from axum-extra
extra_protobuf Enables support for Protobuf from axum-extra
all_extra_types Enables support for all extractors above from axum-extra
all_types Enables support for all extractors above 🚧
422 Use 422 Unprocessable Entity instead of 400 Bad Request as the status code when validation fails
into_json Validation errors will be serialized into JSON format and returned as the HTTP body
full Enables all features 🚧

License

This project is licensed under the MIT License.

References