axum-accept 0.0.1

Typed accept negotiation for axum.
Documentation

axum-accept

CI crates.io docs.rs License

Typed accept negotiation for axum, following RFC7231.

Example

use axum::{extract::Json, response::{IntoResponse, Response}};
use axum_accept::{typed_media_type, Accept2};
use serde::Serialize;

typed_media_type!(TextPlain: TEXT/PLAIN);
typed_media_type!(ApplicationJson: APPLICATION/JSON);

#[derive(Debug, Serialize)]
struct Message {
    content: String,
}

async fn my_handler(accept: Accept2<TextPlain, ApplicationJson>) -> Response {
    match accept {
        Accept2::A(TextPlain(_)) => "hello world".into_response(),
        Accept2::B(ApplicationJson(_)) => Json(Message { content: "hello_world".to_string() }).into_response(),
    }
}

License

Licensed under either of

at your option.