整合 axum 与 serde,为 axum 0.7 提供多种数据格式的提取器/响应器,使用体验等于 Json
。
🚀 基本用法
- 安装
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 页
评论区
写评论还没有评论