前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【大家的项目】Axum 0.7 的 serde-based 提取器和响应器:axum-serde

【大家的项目】Axum 0.7 的 serde-based 提取器和响应器:axum-serde

作者头像
MikeLoveRust
发布2023-12-01 11:27:04
2630
发布2023-12-01 11:27:04
举报

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

🚀 基本用法

  • 安装
代码语言:javascript
复制
cargo add axum-serde --features yaml
# 按需启用 feature
  • 例子
代码语言:javascript
复制
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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀 基本用法
  • 支持的 提取器/响应器 列表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档