< 返回版块

gengteng 发表于 2023-11-30 16:50

Tags:axum,serde

整合 axum 与 serde,为 axum 0.7 提供多种数据格式的提取器/响应器,使用体验等于 Json

crates.io crates.io download LICENSE dependency status GitHub Workflow Status Coverage Status

🚀 基本用法

  • 安装
cargo add axum-serde --features yaml
# 按需启用 feature
  • 例子
use axum::routing::post;
use axum::Router;
use axum_serde::Yaml;
use serde::Deserialize;
use std::net::SocketAddr;
use tokio::net::TcpListener;

#[derive(Debug, Deserialize)]
pub struct Data {
    pub v0: usize,
    pub v1: usize,
}

pub async fn handler(Yaml(_data): Yaml<Data>) {
    // use _data
}

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let router = Router::new().route("/data", post(handler));
    let listener = TcpListener::bind(&SocketAddr::from(([0u8, 0, 0, 0], 0u16))).await?;
    axum::serve(listener, router.into_make_service()).await?;
    Ok(())
}

支持的 提取器/响应器 列表

Extractor Feature Backend
Yaml<T> yaml serde_yaml v0.9.27
MsgPack<T> / MsgPackRaw<T> msgpack rmp-serde v1.1.2
Toml<T> toml toml v0.8.8
Xml<T> xml quick-xml v0.31.0

如果你使用过 axum 0.6 并使用了 axum-yaml、axum-msgpack、axum-toml、axum-xml 之类的 crate,并且打算升级到 axum 0.7 的话,可以使用这个库。

欢迎提 issue / PR。


Ext Link: https://github.com/gengteng/axum-serde

评论区

写评论

还没有评论

1 共 0 条评论, 1 页