5 个版本 (3 个重大更改)

0.4.0 2023年12月31日
0.3.0 2022年11月28日
0.2.2 2022年4月16日
0.2.1 2022年1月21日
0.1.0 2021年8月28日

#467 in 编码

Download history · Rust 包仓库 91/week @ 2024-03-11 · Rust 包仓库 228/week @ 2024-03-18 · Rust 包仓库 100/week @ 2024-03-25 · Rust 包仓库 253/week @ 2024-04-01 · Rust 包仓库 108/week @ 2024-04-08 · Rust 包仓库 31/week @ 2024-04-15 · Rust 包仓库 69/week @ 2024-04-22 · Rust 包仓库 32/week @ 2024-04-29 · Rust 包仓库 99/week @ 2024-05-06 · Rust 包仓库 3/week @ 2024-05-13 · Rust 包仓库 19/week @ 2024-05-20 · Rust 包仓库 5/week @ 2024-05-27 · Rust 包仓库 35/week @ 2024-06-03 · Rust 包仓库 36/week @ 2024-06-10 · Rust 包仓库 15/week @ 2024-06-17 · Rust 包仓库 7/week @ 2024-06-24 · Rust 包仓库

每月下载量:93
用于 4 crates

MIT 协议

22KB
430 代码行

axum-msgpack

axum-msgpack 为 axum 添加 MessagePack 功能。

Documentation Crates.io

有关此crate的更多信息,请参阅crate 文档

serde msgpack

功能

  • 从请求/响应序列化和反序列化 MessagePack

使用示例

use axum_msgpack::MsgPack;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
struct User {
    pub name: String,
    #[serde(with = "serde_bytes")]
    pub data: Vec<u8>
}

// axum handler | MsgPack
async fn get_handler() -> MsgPack<User> {
    let user = User {
        name: "steve".to_string(),
        data: vec![0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    };
    MsgPack(user)
}

// axum handler | MsgPack
async fn post_handler(MsgPack(user): MsgPack<User>) -> Html<String> {
    let string = format!("<h1>{:?}</h1>", user.name);
    Html(string)
}

// axum handler | MsgPackRaw
async fn get_handler_raw() -> MsgPackRaw<User> {
    let user = User {
        name: "steve".to_string(),
        data: vec![0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    };
    MsgPackRaw(user)
}

// axum handler | MsgPackRaw
async fn post_handler_raw(MsgPackRaw(user): MsgPackRaw<User>) -> Html<String> {
    let string = format!("<h1>{:?}</h1>", user.name);
    Html(string)
}

序列化/反序列化 MsgPack 的依赖项

serde = { version = "1.0", features = ["derive"] }
serde_bytes = "0.11"

为了正确打包数组,请记得在结构体成员中添加 #[serde(with = "serde_bytes")]

安全性

此 crate 使用 #![forbid(unsafe_code)] 确保所有内容都在 100% 安全的 Rust 中实现。

许可证

本项目采用 MIT 许可证。

依赖项

~6–8.5MB
~148K SLoC