Expand description
Axum integration for Facet.
This crate provides Axum extractors and response types that use Facet’s serialization instead of serde. This allows you to use Facet-derived types directly in your Axum handlers without needing serde derives.
§Features
json(default): EnablesJson<T>extractor/response usingfacet-jsonform(default): EnablesForm<T>andQuery<T>extractors usingfacet-urlencoded
§Example
ⓘ
use axum::{routing::{get, post}, Router};
use facet::Facet;
use facet_axum::{Json, Query};
#[derive(Debug, Facet)]
struct CreateUser {
name: String,
email: String,
}
#[derive(Debug, Facet)]
struct User {
id: u64,
name: String,
email: String,
}
#[derive(Debug, Facet)]
struct SearchParams {
q: String,
page: u64,
}
async fn create_user(Json(payload): Json<CreateUser>) -> Json<User> {
Json(User {
id: 1,
name: payload.name,
email: payload.email,
})
}
async fn search(Query(params): Query<SearchParams>) -> String {
format!("Searching for '{}' on page {}", params.q, params.page)
}
let app = Router::new()
.route("/users", post(create_user))
.route("/search", get(search));Structs§
- Form
- A wrapper type for URL-encoded form data deserialization.
- Form
Rejection - Rejection type for form extraction errors.
- Json
- A wrapper type for JSON-encoded request/response bodies.
- Json
Rejection - Rejection type for JSON extraction errors.
- Query
- A wrapper type for URL query parameter deserialization.
- Query
Rejection - Rejection type for query parameter extraction errors.