#xml-parser #derive-deserialize #xml

rustcms-axum-xml

XML extractor for axum

1 unstable release

0.3.0 Mar 15, 2023

#34 in #derive-deserialize

MIT license

14KB
237 lines

使用

添加到 Cargo.toml

rustcms-axum-xml = "0.3.0"

Extractor example

use axum::{
    extract,
    routing::post,
    Router,
};
use serde::Deserialize;
use rustcms_axum_xml::Xml;
///
#[derive(Deserialize)]
struct CreateUser {
    email: String,
    password: String,
}
///
async fn create_user(Xml(payload): Xml<CreateUser>) {
    // payload is a `CreateUser`
}

Response example

use axum::{
    extract::Path,
    routing::get,
    Router,
};
use serde::Serialize;
use uuid::Uuid;
use rustcms_axum_xml::Xml;

#[derive(Serialize)]
struct User {
    id: Uuid,
    username: String,
}

async fn get_user(Path(user_id) : Path<Uuid>) -> Json<User> {
    let user = find_user(user_id).await;
    Xml(user)
}

新版 rustcms-axum-xml

因 axum-xml 0.2.0 不支持新版 axum ,所以在他基础上修改,并参考 axum Json 进行处理 Xml

XML extractor for axum.

This crate provides struct Xml that can be used to extract typed information from request's body.

Under the hood, quick-xml is used to parse payloads.

Features

  • encoding: support non utf-8 payload

License

MIT

Dependencies

~2.7–4.5MB
~87K SLoC